<!DOCTYPE html>
<html lang='zh-CN'>
<head>
<title>💗 Love you 💗.html · 11路/love_code - Gitee.com</title>
<meta content='on' http-equiv='x-dns-prefetch-control'>
<link href='//e.gitee.com' rel='dns-prefetch'>
<link href='//files.gitee.com' rel='dns-prefetch'>
<link href='//toscode.gitee.com' rel='dns-prefetch'>
<link href='https://cn-assets.gitee.com' rel='dns-prefetch'>
<link href='https://portrait.gitee.com' rel='dns-prefetch'>
<link rel="shortcut icon" type="image/vnd.microsoft.icon" href="https://cn-assets.gitee.com/assets/favicon-9007bd527d8a7851c8330e783151df58.ico" />
<link rel="canonical" href="https://gitee.com/yzk_11/love_code" />
<meta content='gitee.com/yzk_11/love_code git https://gitee.com/yzk_11/love_code.git' name='go-import'>
<meta charset='utf-8'>
<meta content='always' name='referrer'>
<meta content='Gitee' property='og:site_name'>
<meta content='Object' property='og:type'>
<meta content='https://gitee.com/yzk_11/love_code/blob/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html' property='og:url'>
<meta content='https://gitee.com/static/images/logo_themecolor.png' itemprop='image' property='og:image'>
<meta content='💗 Love you 💗.html · 11路/love_code - Gitee.com' itemprop='name' property='og:title'>
<meta content='爱心代码' property='og:description'>
<meta content='码云,Gitee,代码托管,Git,Git@OSC,Gitee.com,开源,内源,项目管理,版本控制,开源代码,代码分享,项目协作,开源项目托管,免费代码托管,Git代码托管,Git托管服务' name='Keywords'>
<meta content='爱心代码' itemprop='description' name='Description'>
<meta content='pc,mobile' name='applicable-device'>

<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="SPJUa5kX4sfPFEpieXjXP9M3YgiRfIGrhyULQaNEaptwK0CEkYBENrd02bH9VegtKtX1XTiN8hmQmHjYo48ALw==" />

<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/application-92f37f947e65f444e944490fdd28d389.css" />
<script>
//<![CDATA[
window.gon = {};gon.locale="zh-CN";gon.sentry_dsn=null;gon.baidu_register_hm_push=null;gon.sensor={"server_url":"https://haveaniceday.gitee.com:3443/sa?project=production","sdk_url":"https://cn-assets.gitee.com/assets/static/sensors-sdk-2f850fa5b654ad55ac0993fda2f37ba5.js","page_type":"其他"};gon.info={"controller_path":"blob","action_name":"show","current_user":{"id":11996704,"name":"11路","username":"yzk_11","official":false,"admin":false,"avatar_url":"no_portrait.png#11路-yzk_11"}};gon.tour_env={"current_user":"yzk_11","action_name":"show","original_url":"https://gitee.com/yzk_11/love_code/blob/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html","controller_path":"blob"};gon.http_clone="https://gitee.com/yzk_11/love_code.git";gon.user_project="yzk_11/love_code";gon.manage_branch="管理分支";gon.manage_tag="管理标签";gon.enterprise_id=0;gon.create_reaction_path="/yzk_11/love_code/reactions";gon.ipipe_base_url="https://go-api.gitee.com";gon.artifact_base_url="https://go-repo.gitee.com";gon.gitee_go_remote_url="https://go.gitee.com/assets";gon.gitee_go_active=false;gon.current_project_is_mirror=false;gon.show_repo_comment=false;gon.diagram_viewer_path="https://diagram-viewer.giteeusercontent.com";gon.ent_host="e.gitee.com";gon.ref="master";
//]]>
</script>
<script src="https://cn-assets.gitee.com/assets/static/sensor-6269b9ad61bbcdaff20078e5dcff62d5.js"></script>
<script src="https://cn-assets.gitee.com/assets/static/sentry-5.1.0-a823fb0be1b61c5d7ca4a89f0536cb0a.js"></script>
<script src="https://cn-assets.gitee.com/assets/application-8728e1a477697c24668ec75f85687454.js"></script>
<script src="https://cn-assets.gitee.com/assets/lib/jquery.timeago.zh-CN-4a4818e98c1978d2419ab19fabcba740.js"></script>

<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/projects/application-46b94c31ba11ae8c37eacce2bdb5603e.css" />
<script src="https://cn-assets.gitee.com/assets/projects/app-8079083d213fdaf708bdc617704703b1.js"></script>

<script type='text/x-mathjax-config'>
MathJax.Hub.Config({
  tex2jax: {
    inlineMath: [['$','$'], ['\\(','\\)']],
    displayMath: [["$$","$$"],["\\[","\\]"]],
    processEscapes: true,
    skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
    ignoreClass: "container|files",
    processClass: "markdown-body"
  }
});
</script>
<script src="https://cn-assets.gitee.com/uploads/resources/MathJax-2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

<script>
  (function () {
    var messages = {
      'zh-CN': {
        addResult: '增加 <b>{term}</b>',
        count: '已选择 {count}',
        maxSelections: '最多 {maxCount} 个选择',
        noResults: '未找到结果',
        serverError: '连接服务器时发生错误'
      },
      'zh-TW': {
        addResult: '增加 <b>{term}</b>',
        count: '已選擇 {count}',
        maxSelections: '最多 {maxCount} 個選擇',
        noResults: '未找到結果',
        serverError: '連接服務器時發生錯誤'
      }
    }
  
    if (messages[gon.locale]) {
      $.fn.dropdown.settings.message = messages[gon.locale]
    }
  }());
</script>

<script>
  var userAgent = navigator.userAgent;
  var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
  if(isLessIE11){
    var can_access = ""
    if (can_access != "true"){
      window.location.href = "/incompatible.html";
    }
  }
  document.addEventListener("error", function (ev) {
    var elem = ev.target;
    if (elem.tagName.toLowerCase() === 'img') {
      elem.src = "";
    }
  }, true);
</script>
</head>

<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
  var title = document.title.replace(/( - Gitee| - 码云)$/, '')
      imgUrl = '';
  
  document.addEventListener('DOMContentLoaded', function(event) {
    var imgUrlEl = document.querySelector('.readme-box .markdown-body > img, .readme-box .markdown-body :not(a) > img');
    imgUrl = imgUrlEl && imgUrlEl.getAttribute('src');
  
    if (!imgUrl) {
      imgUrlEl = document.querySelector('meta[itemprop=image]');
      imgUrl = imgUrlEl && imgUrlEl.getAttribute('content');
      imgUrl = imgUrl || "https://gitee.com/static/images/logo_themecolor.png";
    }
  
    wx.config({
      debug: false,
      appId: "wxff219d611a159737",
      timestamp: "1726918523",
      nonceStr: "69494d10a1abcc68819f825e0460ccdb",
      signature: "7aa40ee5e6a3d77c8cbdbdb96bc6d57799cc833d",
      jsApiList: [
        'onMenuShareTimeline',
        'onMenuShareAppMessage'
      ]
    });
  
    wx.ready(function () {
      wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: "https://gitee.com/yzk_11/love_code/blob/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: imgUrl // 分享图标
      });
      wx.onMenuShareAppMessage({
        title: title, // 分享标题
        link: "https://gitee.com/yzk_11/love_code/blob/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html", // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        desc: document.querySelector('meta[name=Description]').getAttribute('content'),
        imgUrl: imgUrl // 分享图标
      });
    });
    wx.error(function(res){
      console.error('err', res)
    });
  })
</script>

<body class='git-project lang-zh-CN'>
<header class='common-header fixed noborder' id='git-header-nav'>
<div class='ui container'>
<div class='ui menu header-menu header-container'>
<div class='git-nav-expand-bar'>
<i class='iconfont icon-mode-table'></i>
</div>
<div class='gitee-nav__sidebar'>
<div class='gitee-nav__sidebar-container'>
<div class='gitee-nav__sidebar-top'>
<div class='gitee-nav__avatar-box'>
<a href="/yzk_11"><img class="ui avatar image yzk_11-avatar" avatar="11路-yzk_11" />
</a></div>
<div class='gitee-nav__info-box'>
<a href="/yzk_11">11路</a>
</div>
</div>
<div class='gitee-nav__sidebar-middle'>
<div class='gitee-nav__sidebar-list'>
<ul>
<li class='gitee-nav__sidebar-item'>
<a href="/yzk_11"><i class='iconfont icon-ic-dashboard'></i>
<span class='gitee-nav__sidebar-name'>个人主页</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/explore"><i class='iconfont icon-ic-discover'></i>
<span class='gitee-nav__sidebar-name'>开源</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/enterprises"><i class='iconfont icon-ic-enterprise'></i>
<span class='gitee-nav__sidebar-name'>企业版</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/education"><i class='iconfont icon-ic-education'></i>
<span class='gitee-nav__sidebar-name'>高校版</span>
</a></li>
<li class='gitee-nav__sidebar-item split-line'></li>
<li class='gitee-nav__sidebar-item'>
<a href="/search"><i class='iconfont icon-ic-search'></i>
<span class='gitee-nav__sidebar-name'>搜索</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/help"><i class='iconfont icon-help-circle'></i>
<span class='gitee-nav__sidebar-name'>帮助中心</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/terms"><i class='iconfont icon-file'></i>
<span class='gitee-nav__sidebar-name'>使用条款</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/about_us"><i class='iconfont icon-issuepx'></i>
<span class='gitee-nav__sidebar-name'>关于我们</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a href="/profile/account_information"><i class='iconfont icon-edit'></i>
<span class='gitee-nav__sidebar-name'>设置</span>
</a></li>
<li class='gitee-nav__sidebar-item'>
<a rel="nofollow" data-method="delete" href="/logout"><i class='iconfont icon-ic-logout'></i>
<span class='gitee-nav__sidebar-name'>
退出
</span>
</a></li>
</ul>
</div>
</div>
<div class='gitee-nav__sidebar-bottom'>
<div class='gitee-nav__sidebar-close-button'>
<i class='fa fa-angle-double-left'></i>
</div>
</div>
</div>
</div>

<!-- /todo 10周年活动结束后 恢复 -->
<div class='item gitosc-logo'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='28' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'>
<img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='28' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='95'>
</a></div>
<a title="开源" class="item " href="/explore">开源
</a><a title="企业版" class="item " sa_evt="click_GiteeCommunity_tab_En" href="/enterprises">企业版
</a><a title="高校版" class="item " href="/education">高校版
</a><a title="私有云" class="item" target="_blank" href="https://gitee.cn?utm_source=giteecom">私有云
</a><a title="Gitee AI" class="item mr-3" id="gitee-blog" target="_blank" href="https://ai.gitee.com/?utm_sources=site_nav">Gitee AI
<sup class='ui red label'>
NEW
</sup>
</a><div class='dropdown item ui' id='my-gitee-dropdown'>
<a href="/">我的</a>
<i class='dropdown icon'></i>
<div class='menu'>
<div class='ui active dimmer inverted js-my-gitee-dropdown-loader'>
<div class='ui loader'></div>
</div>
<div class='header user-enterprises'>
<a class="pull-right" target="_blank" href="/yzk_11/dashboard/enterprises">全部</a>
企业
<span class='count'></span>
</div>
<div class='disabled item tip user-enterprises'>
无企业
</div>
<div class='header user-groups'>
<a class="pull-right" target="_blank" href="/yzk_11/dashboard/groups">全部</a>
组织
<span class='count'></span>
</div>
<div class='disabled item tip user-groups'>
无组织
</div>
<div class='header user-programs'>
项目
<span class='count'></span>
</div>
<div class='disabled item tip user-programs'>
<span class="translation_missing" title="translation missing: zh-CN.layouts.header.empty_programs">Empty Programs</span>
</div>
<div class='header user-projects'>
<a class="pull-right" target="_blank" href="/yzk_11/projects">全部</a>
仓库
<span class='count'></span>
</div>
<div class='disabled item tip user-projects'>
无项目
</div>
</div>
</div>
<div class='center responsive-logo'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline image' height='24' src='/static/images/logo.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'>
<img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='ui inline black image' height='24' src='/static/images/logo-black.svg?t=158106664' title='Gitee - 基于 Git 的代码托管和研发协作平台' width='85'>
</a></div>
<div class='right menu userbar right-header' id='git-nav-user-bar'>
<form class="ui item" id="navbar-search-form" data-text-require="搜索关键字不能少于1个" data-text-filter="搜索格式不正确" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
<input type="hidden" name="type" id="navbar-search-type" />
<input type="hidden" name="fork_filter" id="fork_filter" value="on" />
<div class='ui search header-search'>
<input type="text" name="q" id="navbar-search-input" value="" class="prompt" placeholder="搜开源" />
</div>
</form>

<script>
  var can_search_in_repo = 1,
      repo = "VFdwWmVVMUVZelZQUkVKb1RucFplbHBuUFQxaE56WXpaZz09YTc2M2Y=",
      reponame = "yzk_11/love_code";
  
  $(function() {
    var $search = $('#navbar-search-form .ui.search');
    $search.search({
      apiSettings: {
        url: '/search/relative_project?q={query}',
        onResponse: function (res) {
          if (res && res.status === 200 && res.data) {
            var query = htmlSafe($search.search('get value'));
  
            res.data.map(function (item) {
              item.path_ns = '/' + item.path_ns;
              item.icon = 'iconfont icon-project-public';
            });
            res.data.unshift({
              name_ns: "在全站搜索 <b class='hl'>" + query +"</b> 相关项目",
              path_ns: '/search?fork_filter=on&q=' + query,
              icon: 'iconfont icon-search'
            });
            return res;
          } else {
            return { data: [] };
          }
        }
      },
      fields: {
        results: 'data',
        description: 'name_ns',
        url: 'path_ns',
        icon: 'icon'
      },
      minCharacters: 1,
      maxResults: 10,
      searchDelay: 250,
      showNoResults: false,
      transition: 'fade'
    });
  });
</script>

<div class='item ui dropdown empty' data-count-path='/notifications/unread_count' data-enable data-mark-notice-path='/notifications/mark' id='notice-dropdown'>
<a class="remind-button" href="/notifications"><i class='iconfont icon-remind'></i>
<div class='notice-count total'></div>
</a><div class='notice-dropdown-panel menu'>
<div class='notice-dropdown-panel-header'>
<div class='tab active' data-data-path='/notifications/notices?scope=referer' data-html-path='/notifications/referer' data-scope='referer'>
<div class='content'>
@ 我
<div class='notice-count referer'></div>
</div>
</div>
<div class='tab' data-data-path='/notifications/notices?scope=infos' data-html-path='/notifications/infos' data-scope='infos'>
<div class='content'>
通知
<div class='notice-count infos'></div>
</div>
</div>
<div class='tab' data-data-path='/notifications/notices?scope=messages' data-html-path='/notifications/messages' data-scope='messages'>
<div class='content'>
私信
<div class='notice-count messages'></div>
</div>
</div>
</div>
<div class='item notice-dropdown-panel-container'>
<div class='ui dimmer over active'>
<div class='ui loader'></div>
</div>
<div class='notice-list'></div>
<div class='notice-dropdown-panel-blank'>
暂没有新消息
</div>
</div>
<div class='notice-dropdown-panel-footer'>
<div class='action'>
<div class='side left'>
<a class="mark-notices" href="javascript: void(0);">当前标记为已读
</a></div>
<div class='side right'>
<a class="load-all" target="_blank" href="javascript: void(0);">查看全部
</a></div>
</div>
</div>
</div>
</div>

<div class='ui item' id='feature-update-notice'>
<div class='notice-update-icon'>
<a class="notice-update-popup click-knowed" title="" href="javascript:void(0)"><img alt="功能更新" title="" class="bubl_icon bubl-off-icon" src="https://cn-assets.gitee.com/assets/bulb_off-24ee940be20998aace89a3f040cbc704.svg" />
<img alt="功能更新" title="" class="bubl_icon bubl-on-icon" src="https://cn-assets.gitee.com/assets/bulb_on-3986b1dc417285398e3d15671bd8f261.svg" />
</a></div>
<div class='feature-update-notice-panel menu'>
<div class='notice-img'>
<img alt="" title="" class="notice-img-show" src="" />
</div>
<div class='notice-update-title'></div>
<div class='notice-update-des'></div>
<div class='notice-btn-list d-flex-between'>
<button name="button" type="button" class="ui basic orange button btn-notice btn-knowed click-knowed" style="margin-right: 0">我知道了</button>
<a class="ui button orange btn-notice btn-details click-knowed" target="_blank" href="">查看详情</a>
</div>
</div>
</div>

<div class='ui dropdown link item' id='git-nav-create'>
<i class='iconfont icon-add-thin'></i>
<div class='right menu'>
<a class="item" href="/projects/new"><i class='add square icon'></i>
新建仓库
</a><a class="item" href="/organizations/new"><i class='group icon'></i>
创建组织
</a><a class="item" sa_evt="click_GiteeCommunity_tab_plus_EnSignup" href="/enterprises/new"><i class='icon iconfont icon-enterprise'></i>
开通企业版
</a><a class="item" href="/projects/import/url"><i class='github icon'></i>
从 GitHub / GitLab 导入仓库
</a><a class="item" href="/yzk_11/codes/new"><i class='code icon'></i>
发布代码片段
</a></div>
</div>
<div class='ui dropdown item' id='git-nav-user'>
<img class="ui avatar image" avatar="11路-yzk_11" />
<i class='dropdown icon'></i>
<div class='right menu'>
<a class="item" href="/yzk_11"><i class='iconfont icon-ic-home'></i>
个人主页
</a><a class="item" href="/yzk_11/starred"><i class='iconfont icon-star'></i>
我的星选集
</a><a class="item" sa_evt="recommenderClick" sa_click_location="头像-成为推荐官" href="/profile/cps/overview"><img src="https://cn-assets.gitee.com/assets/cps_icon-9c17338b5d65451ce5190ddb75fce3c7.svg" alt="Cps icon" />
成为推荐官
</a><a class="item" href="/profile/account_information"><div class='mayun-icon my-ic-edit my-ic-edit-dims'></div>
设置
</a><div class='divider'></div>
<a class="item" target="_blank" href="https://help.gitee.com"><div class='mayun-icon my-ic-help my-ic-help-dims'></div>
帮助
</a><div class='divider'></div>
<a class="item destroy-user-session" rel="nofollow" data-method="delete" href="/logout"><div class='mayun-icon my-ic-exit my-ic-exit-dims'></div>
退出
</a></div>
</div>
<script>
  $('.destroy-user-session').on('click', function() {
    $.cookie('access_token', null, { path: '/' });
  })
</script>

</div>
</div>
</div>
</header>
<script>
  Gitee.initNavbar()
  Gitee.initRepoRemoteWay()
  $.cookie('user_locale',null)
</script>

<script>
  var userAgent = navigator.userAgent;
  var isLessIE11 = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1;
  if(isLessIE11){
    var can_access = ""
    if (can_access != "true"){
      window.location.href = "/incompatible.html";
    }
  }
</script>

<div class='fixed-notice-infos'>
<div class='all-messages'>
<div class='ui info message' id='git-bulletin'>
<a href=https://gitee.com/gitee-community/gitee-talk-0925 target='_blank'>9月25日晚8点，Gitee 吐槽大会正式开幕，吐槽火力全开，Gitee 接招不慌！</a>
<i class='icon remove' id='remove-bulletin'></i>
</div>
</div>
<div class='ui container'>
<div class='flash-messages' id='messages-container'></div>
</div>
<script>
  (function() {
    $(function() {
      var $error_box, alertTip, notify_content, notify_options, template;
      template = '<div data-notify="container" class="ui {0} message" role="alert">' + '<i data-notify="dismiss" class="close icon"></i>' + '<span data-notify="message">{2}</span>' + '</div>';
      notify_content = null;
      notify_options = {};
      alertTip = '';
      $error_box = $(".flash_error.flash_error_box");
      if (notify_options.type === 'error' && $error_box.length > 0 && !$.isEmptyObject(notify_content.message)) {
        if (notify_content.message === 'captcha_fail') {
          alertTip = "验证码不正确";
        } else if (notify_content.message === 'captcha_expired') {
          alertTip = "验证码已过期，请点击刷新";
        } else if (notify_content.message === 'not_found_in_database') {
          alertTip = "帐号或者密码错误";
        } else if (notify_content.message === 'not_found_and_show_captcha') {
          alertTip = "帐号或者密码错误";
        } else if (notify_content.message === 'phone_captcha_fail') {
          alertTip = "手机验证码不通过";
        } else {
          alertTip = notify_content.message;
        }
        return $error_box.html(alertTip).show();
      } else if (notify_content) {
        if ("show" === 'third_party_binding') {
          return $('#third_party_binding-message').html(notify_content.message).addClass('ui message red');
        }
        notify_options.delay = 3000;
        notify_options.template = template;
        notify_options.offset = {
          x: 10,
          y: 30
        };
        notify_options.element = '#messages-container';
        return $.notify(notify_content, notify_options);
      }
    });
  
  }).call(this);
</script>

</div>
<script>
  (function() {
    $(function() {
      var setCookie;
      setCookie = function(name, value) {
        $.cookie(name, value, {
          path: '/',
          expires: 365
        });
      };
      $('#remove-bulletin, #remove-bulletin-dashboard').on('click', function() {
        setCookie('remove_bulletin', "gitee-maintain-1726831349");
        $('#git-bulletin').hide();
      });
      $('#remove-member-bulletin').on('click', function() {
        setCookie('remove_member_bulletin', "gitee_member_bulletin");
        $(this).parent().hide();
      });
      return $('#remove-gift-bulletin').on('click', function() {
        setCookie('remove_gift_bulletin', "gitee-gift-bulletin");
        $(this).parent().hide();
      });
    });
  
  }).call(this);
</script>
<script>
  function closeMessageBanner(pthis, type, val) {
    var json = {}
  
    val = typeof val === 'undefined' ? null : val
    $(pthis).parent().remove()
    if (type === 'out_of_enterprise_member') {
      json = {type: type, data: val}
    } else if (type === 'enterprise_overdue') {
      json = {type: type, data: val}
    }
    $.post('/profile/close_flash_tip', json)
  }
</script>

<div class='site-content'>
<div class='git-project-header'>
<div class='fixed-notice-infos'>
<div class='ui info icon floating message green' id='fetch-ok' style='display: none'>
<div class='content'>
<div class='header status-title'>
<i class='info icon status-icon'></i>
代码拉取完成，页面将自动刷新
</div>
</div>
</div>
<div class='ui info icon floating message error' id='fetch-error' style='display: none'>
<div class='content'>
<div class='header status-title'>
<i class='info icon status-icon'></i>
<span class='error_msg'></span>
</div>
</div>
</div>
</div>
<div class='ui container'>

<div class='git-project-header-details'>
<div class='git-project-header-container'>
<div class='git-project-header-actions'>
<div class='ui tiny modal project-donate-modal' id='project-donate-modal'>
<i class='iconfont icon-close close'></i>
<div class='header'>捐赠</div>
<div class='content'>
未开启捐赠功能，开启捐赠功能需要绑定 OSCHINA 帐号
</div>
<div class='actions'>
<a class='ui blank button cancel'>取消</a>
<a class='ui orange ok button' href='/profile/account_information' target='_blank'>马上绑定</a>
</div>
</div>
<div class='ui small modal wepay-qrcode'>
<i class='iconfont icon-close close'></i>
<div class='header'>
扫描微信二维码支付
<span class='wepay-cash'></span>
</div>
<div class='content weqcode-center'>
<img id='wepay-qrcode' src=''>
</div>
<div class='actions'>
<div class='ui cancel blank button'>取消</div>
<div class='ui ok orange button'>支付完成</div>
</div>
</div>
<div class='ui mini modal' id='confirm-alipay-modal'>
<div class='header'>支付提示</div>
<div class='content'>
将跳转至支付宝完成支付
</div>
<div class='actions'>
<div class='ui approve orange button'>确定</div>
<div class='ui blank cancel button'>取消</div>
</div>
</div>

<span class='ui buttons basic watch-container'>
<div class='ui dropdown button js-project-watch' data-watch-type='watching'>
<input type='hidden' value=''>
<i class='iconfont icon-watch'></i>
<div class='text'>
Watching
</div>
<i class='dropdown icon'></i>
<div class='menu'>
<a data-value="unwatch" class="item" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/unwatch"><i class='iconfont icon-msg-read'></i>
不关注
</a><a data-value="watching" class="item" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/watch"><i class='iconfont icon-msg-read'></i>
关注所有动态
</a><a data-value="releases_only" class="disabled item" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/release_only_watch"><i class='iconfont icon-msg-read'></i>
仅关注版本发行动态
</a><a data-value="ignoring" class="item" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/ignoring_watch"><i class='iconfont icon-msg-read'></i>
关注但不提醒动态
</a></div>
</div>
<style>
  .js-project-watch .text .iconfont {
    display: none; }
  .js-project-watch a, .js-project-watch a:hover {
    color: #000; }
  .js-project-watch .item > .iconfont {
    visibility: hidden;
    margin-left: -10px; }
  .js-project-watch .selected .iconfont {
    visibility: visible; }
  .js-project-watch .menu {
    margin-top: 4px !important; }
</style>
<script>
  $('.js-project-watch').dropdown({
    action: 'select',
    onChange: function(value, text, $selectedItem) {
      var type = value === 'unwatch' ? 'Watch' : 'Watching';
      $(this).children('.text').text(type);
      $(this).dropdown('set selected', value)
    }
  });
</script>

<a class="ui button action-social-count" title="1" href="/yzk_11/love_code/watchers">1
</a></span>
<span class='basic buttons star-container ui'>
<a class="ui button unstar " sa_evt="clickStar" sa_location="其他" sa_url="" sa_repo_id="26207980" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/unstar"><i class='iconfont icon-star-solid'></i>
Starred
</a><a class="ui button star " sa_evt="clickStar" sa_location="其他" sa_url="" sa_repo_id="26207980" data-remote="true" rel="nofollow" data-method="post" href="/yzk_11/love_code/star"><i class='iconfont icon-star'></i>
Star
</a><a class="ui button action-social-count " title="0" href="/yzk_11/love_code/stargazers">0
</a></span>
<span class='ui basic buttons fork-container' title=''>
<a id="fork-top-button" class="ui button fork " sa_evt="repoFork" sa_repo_id="26207980" sa_is_self="true" sa_is_member="true" href="#"><i class='iconfont icon-fork'></i>
Fork
</a><a class="ui button action-social-count " title="0" href="/yzk_11/love_code/members">0
</a></span>
</div>
<h2 class='git-project-title mt-0 mb-0'>
<span class="project-title"><i class="project-icon iconfont icon-project-public" title="这是一个公开仓库"></i> <a title="11路" class="author" href="/yzk_11">11路</a>/<a title="love_code" class="repository" target="" style="padding-bottom: 0px; margin-right: 4px" sa_evt="repoClick" sa_location="其他" sa_url="" sa_repo_id="26207980" href="/yzk_11/love_code">love_code</a></span><span class="project-badges"><a data-confirm="1.你的自荐申请将由我们人工审核，介绍完善、质量高的项目才能被推荐 &lt;br/&gt; 2.编辑可能会根据需要来调整推荐软件的描述信息 &lt;br/&gt; 3.申请提交后，&lt;strong&gt;如一个工作日内未得到推荐，则默认表示被拒&lt;/strong&gt;。" title="自荐" class="git-project-recommend-badge" rel="nofollow" data-method="post" href="/yzk_11/love_code/recomm_self"><i class='iconfont icon-recommend recommend-icon'></i>
</a><style>
  .gitee-modal {
    width: 500px !important; }
</style>
</span>
<input type="hidden" name="project_title" id="project_title" value="11路/love_code" />
</h2>
</div>
</div>
</div>
<div class='ui small modal long' id='modal-fork-project'>
<i class='icon-close iconfont close'></i>
<div class='header'>
Fork 仓库
</div>
<div class='content fork-project-content'>
<div class='fork-info-content'>
<div class='ui segment fork_project_loader'>
<div class='ui active inverted dimmer'>
<div class='ui text loader'>加载中</div>
</div>
</div>
</div>
</div>
<div class='actions fork-action d-flex-between hide'>
<div>
</div>
<div>
<a class='cancel'>&emsp;取消&emsp;</a>
<div class='ui disabled button orange ok'>&emsp;确认&emsp;</div>
</div>
</div>
</div>
<script>
  var title_import_url = "false";
  var title_post_url = "/yzk_11/love_code/update_import";
  var title_fork_url = "/yzk_11/love_code/sync_fork";
  var title_project_path = "love_code";
  var title_p_name = "love_code";
  var title_p_id= "26207980";
  var title_description = "爱心代码";
  var title_form_authenticity_token = "8GAkOc1vKwsu7dy+BrFqKqr4h3tLCmbRrFxjkQCN6p/IuTDWxfiN+laNT22CnFU4UxoQLuL7FWO74RAIAEaAKw==";
  var watch_type = "watching";
  var checkFirst = false;
  
  $('.js-project-watch').dropdown('set selected', watch_type);
  $('.checkbox.sync-wiki').checkbox();
  $('.checkbox.sync-prune').checkbox();
  $('.checkbox.team-member-checkbox').checkbox();
</script>
<script>
  $(function () {
    // SemticUI 校验表单等地方要求直接return 值, 对异步支持非常不友好...
    // 从提交表单处 再用异步校验 ,控制是否提交
    var $modalFork = $('#modal-fork-project');
    var $okBtn = $modalFork.find('.ui.ok.button');
    var $currentTarget = null;
    var isSameProject = false;
  
    $('#fork-top-button, #fork-btm-button').on('click', function (e) {
      e.preventDefault();
      $modalFork.modal('show');
      setTimeout(function () {
        $.ajax({ url: '/yzk_11/love_code/fork_project_info' }).done(function () {
          // 自定义错误消息模板,  inline : true 每个输入框后面都插入消息提示, 而非集中到一处提醒
          $.fn.form.settings.templates.prompt = function (errors) {
            return $('<div />').addClass('ui error message custom prompt label').html(errors[0]);
          };
          // 表单的内容是异步传输的js动态生成的....
          var $repoForm = $('#modal-fork-project .repo-form');
          $repoForm.form({
            on: 'change',
            inline: true,
            fields: {
              projectName: {
                identifier: 'project-name',
                rules: [
                  {
                    type: 'empty',
                    prompt: "仓库名不能为空"
                  },
                  {
                    type: 'regExp',
                    value: window.giteeRegex.projectName,
                    prompt: "仓库名只允许包含中文、字母、数字或者下划线(_)、中划线(-)、英文句号(.)、加号(+)，必须以字母、数字或者点(.)开头，不能以下划线/中划线结尾，且长度为2~191个字符"
                  },
                  {
                    type: 'maxLength[255]',
                    prompt: "仓库名只允许包含中文、字母、数字或者下划线(_)、中划线(-)、英文句号(.)、加号(+)，必须以字母、数字或者点(.)开头，不能以下划线/中划线结尾，且长度为2~191个字符"
                  }
                ]
              },
              projectPath: {
                identifier: 'project-path',
                rules: [
                  {
                    type: 'empty',
                    prompt: "路径不能为空"
                  },
                  {
                    type: 'regExp',
                    value: window.giteeRegex.projectPath,
                    prompt: "路径只允许包含字母、数字或者下划线(_)、中划线(-)、英文句号(.)，必须以字母、数字或者点(.)开头，且长度为2~191个字符"
                  }
                ]
              }
            }
          });
  
          $modalFork.find('.namespace-img-area.ui.checkbox').checkbox({
            onChecked: function () {
              $currentTarget = $(this).closest('.ui.checkbox');
              // 当前选中的空间
              isSameProject = $currentTarget[0].hasAttribute('data-any-same-projects');
              var conflictProjectName = $currentTarget.data('conflict-project-title');
              var conflictProjectUrl = $currentTarget.data('conflict-project-url');
              var conflictProjectNameSpacePath = $currentTarget.data('conflict-namespace');
              var conflictPathType = $currentTarget.find('.path-type').text();
              // fork目标
              var targetProjectName = $currentTarget.data('target-project-name');
              var targetProjectPath = $currentTarget.data('target-project-path');
              // 命名空间名称(@xxx)
              var conflictNameSpaceName = $currentTarget.find('.path-name').text();
              var $forkTargetNamespace = $('.fork-target-namespace-area');
              var $forkTargetNamespaceItem = $(this).closest('.fork-target-namespace-item')
              // 冲突 显示修改表单
              if (isSameProject) {
                //$forkTargetNamespace.addClass('same-name-editing');
                $('.fork-target-namespace-item').removeClass('same-name-editing')
                $forkTargetNamespaceItem.addClass('same-name-editing')
                $forkTargetNamespace
                  .find('.conflict-namespace-name')
                  .attr('href', `/${conflictProjectNameSpacePath}`)
                  .text(conflictNameSpaceName);
                $forkTargetNamespace
                  .find('.conflict-path')
                  .attr('href', `${conflictProjectUrl}`)
                  .text(`${conflictProjectNameSpacePath}/${targetProjectPath}`);
                $forkTargetNamespace
                  .find('.prefix-path')
                  .text(`${window.location.origin}/${conflictProjectNameSpacePath}/`);
                $forkTargetNamespace
                  .find('.conflict-path-type')
                  .text(conflictPathType.toLowerCase())
                var $nameInput = $forkTargetNamespace.find('[name="project-name"]');
                var $pathInput = $forkTargetNamespace.find('[name="project-path"]');
                $nameInput.val(targetProjectName);
                $pathInput.val(targetProjectPath);
                checkFirst = true
                // 立即校验一次
                asyncValidateForkRepoForm();
              } else {
                $('.fork-target-namespace-item').removeClass('same-name-editing')
                $forkTargetNamespaceItem.addClass('same-name-editing');
              }
              $okBtn.removeClass('disabled');
            }
          });
        });
      }, 500);
    });
    // 异步校验
    function asyncValidateForkRepoForm (successCallback) {
      var $repoForm = $('#modal-fork-project .same-name-editing .repo-form');
      var $forkTargetNamespace = $('.fork-target-namespace-area .same-name-editing');
      var $nameInput = $forkTargetNamespace.find('[name="project-name"]');
      var $pathInput = $forkTargetNamespace.find('[name="project-path"]');
      var name = $nameInput.val().trim();
      var path = $pathInput.val().trim();
      var namespace = $currentTarget ? $currentTarget.data('conflict-namespace') : '';
      if (!name || !path) return;
      $okBtn.addClass('loading');
      $.ajax('/projects/check_fork_form', {
        type: 'get',
        data: { project_name: name, project_path: path, target_namespaces: namespace },
        success: function (data) {
          if (data.status == 0) {
            successCallback && successCallback();
          } else if (data.status == -1 && Array.isArray(data.conflict_keys)) {
            if (!checkFirst) {
              data.conflict_keys.includes('name') && $repoForm.form('add prompt', 'project-name', "已存在相同仓库名");
              data.conflict_keys.includes('path') && $repoForm.form('add prompt', 'project-path', "已存在相同路径");
            } else {
              data.conflict_keys.includes('name') && data.new_name && $nameInput.val(data.new_name);
              data.conflict_keys.includes('path') && data.new_path && $pathInput.val(data.new_path);
            }
          } else {
            Flash.error("校验失败");
          }
          checkFirst = false
        },
        error: function (err) {
          Flash.error(err.responseJSON.message);
        },
        complete: function () {
          $okBtn.removeClass('loading');
          // 添加提示 弹窗变高后 刷新弹窗位置
          $modalFork.modal('refresh');
        }
      });
    }
    function forkSubmit () {
      $modalFork.modal('hide');
      // 构造一些 input 用于表单提交
      var $form = $('<form></form>');
      var $input = $('<input type="hidden" name="authenticity_token" />');
      var $inputCheck = $('<input type="hidden" name="members" />');
      var $inputCheck2 = $('<input type="hidden" name="namespace_path" />');
      var checkedPath = $('.checkbox.checked > input[name=namespace_path]').val();
      // fork存在冲突, 修改后的表单:
      if (isSameProject) {
        // 获取最新表单数据
        var $forkTargetNamespace = $('.fork-target-namespace-area .same-name-editing');
        var name = $forkTargetNamespace.find('[name="project-name"]').val().trim();
        var path = $forkTargetNamespace.find('[name="project-path"]').val().trim();
        var $projectName = $('<input type="hidden" name="name" />');
        var $projectPath = $('<input type="hidden" name="path" />');
        $projectName.val(name);
        $projectPath.val(path);
        $form.append($projectName);
        $form.append($projectPath);
      }
      $form.hide();
      $form.attr('method', 'post');
      $form.attr('action', '/' + checkedPath + '/fork_project/yzk_11%2Flove_code');
      $input.attr('value', $('meta[name="csrf-token"]').attr('content'));
      $inputCheck.attr('value', $('.checkbox.checked > input[name=members]').val());
      $inputCheck2.attr('value', checkedPath);
      $form.append($input);
      $form.append($inputCheck);
      $form.append($inputCheck2);
      $form.appendTo('body');
      $form.submit();
    }
    $modalFork.modal({
      transition: 'fade',
      closable: true,
      centered: false,
      observeChanges:true,
      onApprove: function () {
        // 存在同名冲突时, 需要修改仓库信息, 再进行校验同名
        // 判断当前选中的空间类型, 用于决定是否需要修改路径仓库名,验证表单
        if (isSameProject) {
          var $repoForm = $('#modal-fork-project .same-name-editing .repo-form');
          $repoForm.form('validate form');
          var isRepoInfoValid = $repoForm.form('is valid'); // 前端校验通过
          // 由于是form提交和ajax检测结合..., 防止意外篡改 提交前必定校验一次, 通过后自动submit
          if (isRepoInfoValid) {
            // SemticUI add prompt 自定义验证连续执行太快, 会消失掉重复再出现再消失.
            setTimeout(function () {
              asyncValidateForkRepoForm(function () {
                forkSubmit();
              });
            }, 200);
          } else {
            $repoForm.form('validate form');
          }
        } else {
          // 正常 frok
          forkSubmit();
        }
        return false;
      }
    });
    $modalFork.find('.close-button').on('click', function () {
      $modalFork.modal('hide');
    });
  });
</script>
<style>
  i.loading, .icon-sync.loading {
    -webkit-animation: icon-loading 1.2s linear infinite;
    animation: icon-loading 1.2s linear infinite;
  }
  .qrcode_cs {
    float: left;
  }
  .check-sync-wiki {
    float: left;
    height: 28px;
    line-height: 28px;
  }
  .sync-wiki-warn {
    color: #e28560;
  }
</style>

<div class='git-project-nav'>
<div class='ui container'>
<div class='ui secondary pointing menu'>
<a class="item active " href="/yzk_11/love_code"><i class='iconfont icon-code'></i>
代码
</a><a class="item " href="/yzk_11/love_code/issues"><i class='iconfont icon-task'></i>
Issues
<span class='ui mini circular label'>
0
</span>
</a><a class="item " href="/yzk_11/love_code/pulls"><i class='iconfont icon-pull-request'></i>
Pull Requests
<span class='ui mini circular label'>
0
</span>
</a><a class="item " href="/yzk_11/love_code/wikis"><i class='iconfont icon-wiki'></i>
Wiki
</a><a class="item  " href="/yzk_11/love_code/repository/stats/master"><i class='iconfont icon-statistics'></i>
统计
</a><a class="item " href="/yzk_11/love_code/gitee_go"><i class='iconfont icon-workflow'></i>
流水线
</a><div class='item'>
<div class='ui pointing top right dropdown git-project-service'>
<div>
<i class='iconfont icon-service'></i>
服务
<i class='dropdown icon'></i>
</div>
<div class='menu' style='display:none'>
<a class="item" href="/yzk_11/love_code/pages"><img src="/static/images/logo-en.svg" alt="Logo en" />
<div class='item-title'>
Gitee Pages
</div>
</a><a class="item" href="/yzk_11/love_code/javadoc"><img src="https://cn-assets.gitee.com/assets/maven-bd58aee84f266d64d4b8ce5b006a9fcf.png" alt="Maven" />
<div class='item-title'>
JavaDoc
</div>
</a><a class="item" href="/yzk_11/love_code/phpdoc"><img src="https://cn-assets.gitee.com/assets/phpdoc-a99f87c2feaa2fd99e5065377a39487e.png" alt="Phpdoc" />
<div class='item-title'>
PHPDoc
</div>
</a><a class="item" href="/yzk_11/love_code/quality_analyses?platform=sonar_qube"><img src="https://cn-assets.gitee.com/assets/sonar_mini-5e1b54bb9f6c951d97fb778ef623afea.png" alt="Sonar mini" />
<div class='item-title'>
质量分析
</div>
</a><a class="item" href="/yzk_11/love_code/quality_analyses?platform=codesafe"><img width="100%" src="https://cn-assets.gitee.com/assets/codesafe_mini-accbe1e555e9864c552620240d10e4de.png" alt="Codesafe mini" />
<div class='item-title'>
代码卫士
</div>
</a><a class="item" href="/yzk_11/love_code/gitee_scans"><img src="https://cn-assets.gitee.com/assets/giteescan-cd9ab4076bd751faf7e30888eb10f782.png" alt="Giteescan" />
<div class='item-title'>Gitee Scan</div>
</a><a class="item" href="/yzk_11/love_code/codecheck/report?branch=master"><img src="https://cn-assets.gitee.com/assets/CodeCheck-70a10cf889c51df6f00bf159c8e12374.svg" alt="Codecheck" />
<div class='item-title'>CodeCheck</div>
</a><a class="item" href="/yzk_11/love_code/fosseye_cves"><img src="https://cn-assets.gitee.com/assets/service/cve-73044c7335decc74687a3196913c347b.svg" alt="Cve" />
<div class='item-title'>
CVE 漏洞扫描
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4193"><img src="https://cn-assets.gitee.com/assets/jenkins_for_gitee-554ec65c490d0f1f18de632c48acc4e7.png" alt="Jenkins for gitee" />
<div class='item-title'>
Jenkins for Gitee
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4318"><img src="https://cn-assets.gitee.com/assets/cloudbase-1197b95ea3398aff1df7fe17c65a6d42.png?20200925" alt="Cloudbase" />
<div class='item-title'>
腾讯云托管
</div>
</a><a class="item" target="_blank" href="https://gitee.com/help/articles/4330"><img src="https://cn-assets.gitee.com/assets/cloud_serverless-686cf926ced5d6d2f1d6e606d270b81e.png" alt="Cloud serverless" />
<div class='item-title'>
腾讯云 Serverless
</div>
</a><a class="item" href="/yzk_11/love_code/open_sca"><img src="https://cn-assets.gitee.com/assets/open_sca/logo-9049ced662b2f9936b8001e6f9cc4952.png" alt="Logo" />
<div class='item-title'>
悬镜安全
</div>
</a><a class="item" target="_blank" href="https://help.gitee.com/devops/connect/Aliyun-SAE"><img src="https://cn-assets.gitee.com/assets/SAE-f3aa9366a1e2b7fff4747402eb8f10c3.png" alt="Sae" />
<div class='item-title'>
阿里云 SAE
</div>
</a><a class="item" id="update-codeblitz-link" target="_blank" href="https://codeblitz.cloud.alipay.com/gitee/yzk_11/love_code/tree/master/💗 Love you 💗.html"><img style="width:100px;margin-top:4px" src="https://cn-assets.gitee.com/assets/Codeblitz-8824e38875a106e16e29ff57ec977b08.png" alt="Codeblitz" />
<div class='item-title'>
Codeblitz
</div>
</a><button class='ui orange basic button quit-button' id='quiting-button'>
我知道了，不再自动展开
</button>
</div>
</div>
</div>
<a class="item d-flex d-flex-center " href="/yzk_11/love_code/settings"><i class='iconfont icon-settings'></i>
<div class='text ml-05 setting-text'>管理</div>
</a></div>
</div>
</div>
<script>
  $('.git-project-nav .ui.dropdown').dropdown({ action: 'nothing' });
  var gitee_reward_config = JSON.parse(localStorage.getItem('gitee_reward_config') || null) || false
  var $settingText = $('.setting-text')
  // 如果没有访问过
  if(!gitee_reward_config) $settingText.addClass('red-dot')
  $('.git-project-service').dropdown({
    on: 'click',
    action: 'nothing',
    onShow: function () {
      const branch = 'master'
      let newUrl = `https://codeblitz.cloud.alipay.com/gitee/yzk_11/love_code/tree/`
      const url = decodeURIComponent(window.location.pathname);
      const startIndex = url.indexOf('master');
      if (startIndex !== -1) {
        newUrl = newUrl + url.substring(startIndex); // 从分支名开始截取
      }else{
        newUrl = newUrl + branch
      }
      const linkElement = document.getElementById("update-codeblitz-link");
      linkElement.setAttribute("href", newUrl);
    },
  })
</script>
<style>
  .git-project-nav i.checkmark.icon {
    color: green;
  }
  #quiting-button {
    display: none;
  }
  
  .git-project-nav .dropdown .menu.hidden:after {
    visibility: hidden !important;
  }
</style>
<script>
  isSignIn = true
  isClickGuide = true
  $('#git-versions.dropdown').dropdown();
  $.ajax({
    url:"/yzk_11/love_code/access/add_access_log",
    type:"GET"
  });
  $('#quiting-button').on('click',function() {
    $('.git-project-service').click();
    if (isSignIn) {
      $.post("/projects/set_service_guide")
    }
    $.cookie("Serve_State", true, { expires: 3650, path: '/'})
    $('#quiting-button').hide();
  });
  if (!(isClickGuide || $.cookie("Serve_State") == 'true')) {
    $('.git-project-service').click()
    $('#quiting-button').show()
  }
</script>

</div>
<div class='ui container'>

<div class='git-project-content-wrapper'>

<div class='ui grid' id='project-wrapper'>
<div class='sixteen wide column' id='git-project-container'>
<div class='git-project-content' id='git-project-content'>
<div class='row'>
<div class='git-project-desc-wrapper'>
<script>
  $('.git-project-desc-wrapper .ui.dropdown').dropdown();
  if (false) {
    gon.project_new_blob_path = "/yzk_11/love_code/new/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html"
    bindShowModal({
      el: $('.no-license .project-license__create'),
      complete: function(data, modal) {
        if (!data.haveNoChoice && !data.data) {
          Flash.show('请选择一项开源许可证')
        } else {
          location.href = gon.project_new_blob_path + '?license=' + data.data
        }
      },
      skip: function () {
        location.href = gon.project_new_blob_path + '?license'
      }
    });
  }
  
  $(".project-admin-action-box .reject").click(function() {
    var reason = $('[name=review-reject-reason]').val();
    if (!reason) {
      Flash.error('请选择不通过理由')
      return
    }
    $.ajax({
      type: 'POST',
      url: "/admin/shumei_content/shumei_check/reject_project_public",
      data: {
        reason: reason,
        status: 'rejected',
        project_id: 26207980
      },
      success: function(result){
        if(result.status == 'success'){
          window.location.reload();
        }else{
          Flash.error(result.message)
        }
      }
    })
  })
  
  $(".project-admin-action-box .approve").click(function(){
  
    $.ajax({
      type: 'POST',
      url: "/admin/shumei_content/shumei_check/reject_project_public",
      data: {
        status: 'approved',
        project_id: 26207980
      },
      success: function(result){
        if(result.status == 'success'){
          window.location.reload();
        }else{
          Flash.error(result.message)
        }
      }
    })
  })
  
  $(".project-admin-action-box .waiting").click(function(){
  
    $.ajax({
      type: 'POST',
      url: "/admin/shumei_content/shumei_check/reject_project_public",
      data: {
        status: 'waiting',
        project_id: 26207980
      },
      success: function(result){
        if(result.status == 'success'){
          window.location.reload();
        }else{
          Flash.error(result.message)
        }
      }
    })
  })
  
  $('i.help.circle.icon').popup({
    popup: '.no-license .ui.popup',
    position: 'right center'
  });
  
  $('#remove-no-license-message').on('click', function() {
    $.cookie("skip_repo_no_license_message_26207980", 'hide', { expires: 365 });
    $('#user-no-license-message').hide();
    return;
  });
</script>
</div>

</div>
<div class='git-project-bread' id='git-project-bread'>
<div class='ui horizontal list mr-1'>
<div class='item git-project-branch-item'>
<input type="hidden" name="path" id="path" value="💗 Love you 💗.html" />
<div class='ui top left pointing dropdown gradient button dropdown-has-tabs' id='git-project-branch'>
<input type="hidden" name="ref" id="ref" value="master" />
<div class='default text'>
master
</div>
<i class='dropdown icon'></i>
<div class='menu'>
<div class='ui left icon input'>
<i class='iconfont icon-search dropdown-search-icon'></i>
<input class='search-branch' placeholder='搜索分支' type='text'>
</div>
<div class='tab-menu project-branch-tab-menu'>
<div class='tab-menu-actions d-align-center'>
<div class='tab-menu-action' data-tab='branches'>
<a class="ui link button" href="/yzk_11/love_code/branches">管理</a>
</div>
<div class='tab-menu-action' data-tab='tags'>
<a class="ui link button" href="/yzk_11/love_code/tags">管理</a>
</div>
<div class='tab-menu-action-other ml-2'>
<a class="ui link button" href="/yzk_11/love_code/branches#create-branch-modal">新建分支</a>
</div>
</div>
<div class='tab-menu-item' data-placeholder='搜索分支' data-tab='branches'>
分支 (1)
</div>
</div>
<div class='tab scrolling menu' data-tab='branches' id='branches_panel'>
<div data-value="master" class="item"><span>master</span></div>
</div>
</div>
</div>
<style>
  .iconfont.icon-shieldlock {
    color: #8c92a4;
  }
  .dropdown-search-icon {
    position: absolute;
    top: 8px;
    left: 11px;
  }
</style>
<style>
  #git-project-branch .project-branch-tab-menu {
    width: 400px !important;
    margin: 0 16px !important;
    padding-left: 0px !important;
    padding-right: 0px !important;
    border-bottom: 1px solid #dfe3e9 !important; }
  #git-project-branch .tab-menu-actions {
    position: absolute;
    right: 0px !important;
    bottom: 0.357em; }
  #git-project-branch .tab-menu-action {
    position: relative !important;
    right: 0px !important;
    bottom: 0px !important; }
  #git-project-branch .menu::after {
    display: none !important; }
</style>
<script>
  var $branchesDropdown = $('#branches_panel');
  var $tagsDropdown = $('#tags_panel');
  var $searchNameInput = $('.search-branch');
  var concurrentRequestLock = false;
  var filterXSS = window.filterXSS;
  var search_text = "";
  var branch_page_number = 1;
  var branch_total_pager = Math.ceil(1 / 20) || 1
  
  var flag_is_loading = false;
  var flag_page_number = 1;
  var flag_total_pager = Math.ceil(0 / 20) || 1
  
  $branchesDropdown.scroll(function() {
    var branchesPanel = document.getElementById('branches_panel');
    var numOfBranches = $branchesDropdown.children().length;
    if (branchesPanel.clientHeight + branchesPanel.scrollTop + 37 > branchesPanel.scrollHeight && numOfBranches < 1) {
      debounceLoadMoreBranches.call();
    }
  });
  function resetFlagVal() {
    flag_is_loading = false;
    flag_page_number = 1;
    flag_total_pager = 1;
  
    concurrentRequestLock = false
    search_text = "";
    branch_page_number = 1;
    branch_total_pager = 1
  }
  $searchNameInput.on('input', window.globalUtils.debouce(function (e) {
    resetFlagVal()
    var $currentTab = $('.tab-menu-action.active');
    var numOfBranches = $branchesDropdown.children().length;
    var searchWord = $searchNameInput.val().trim();
    search_text = searchWord
    if($currentTab.data('tab') === 'branches') {
      if (searchWord !== "") {
        loadData(searchWord,1);
      } else {
        loadData();
      }
    }
    var numOfTags = $tagsDropdown.children().length;
    if($currentTab.data('tab') === 'tags') {
      if (searchWord !== "") {
        fetchTags(searchWord,1);
      } else {
        fetchTags();
      }
    }
  }, 500));
  
  function toggleNoResultView($popPanel) {
    let no_data_html= `<div class='mt-1 mb-1 d-flex-center'> <span>暂无数据</span> </div>`
    $popPanel.append(no_data_html)
  }
  var debounceLoadMoreBranches = window.globalUtils.debouce(function () {
    if (concurrentRequestLock) return;
    branch_page_number += 1;
    if (branch_page_number > branch_total_pager) return;
    loadData(search_text, branch_page_number);
  }, 350);
  
  function loadData(search, page) {
    if (concurrentRequestLock) { return; }
    concurrentRequestLock = true;
  
    var searchParams = search || "";
    var pageParams = page || 1;
    $.ajax({
      url: "/" + gon.user_project + "/branches/names.json",
      type: 'GET',
      data: {
        search: searchParams,
        page: pageParams,
      },
      dataType: 'json',
      success: function (data) {
        branch_total_pager = data.total_pages;
        var html = '';
  
        if (pageParams === 1) {
          $branchesDropdown.empty();
        }
        data.branches.forEach(function (branch) {
          var protectRule = '';
          var branchName = filterXSS(branch.name);
          if(branch.branch_type.value === 1) {
            var rule = filterXSS(branch.protection_rule.wildcard);
            protectRule = `<i
                class="iconfont icon-shieldlock protected-branch-popup"
                data-title="受保护分支"
                data-content='保护规则： ${rule}'
              >
              </i>`
          }
          html += `<div data-value='${branchName}' class="item">
                    <span>${branchName}</span> ${protectRule}
                    </div>`
        });
        $branchesDropdown.append(html);
        $('.protected-branch-popup').popup()
        if (pageParams === 1 && data.count === 0) {
          toggleNoResultView($branchesDropdown);
        }
      },
      complete: function () {
        concurrentRequestLock = false;
      }
    });
  }
  
  
  
  $tagsDropdown.scroll(function() {
    var tagsPanel = document.getElementById('tags_panel');
    var numOfTags = $tagsDropdown.children().length;
    if (tagsPanel.clientHeight + tagsPanel.scrollTop + 37 > tagsPanel.scrollHeight && numOfTags < 0) {
      debounceLoadMore.call();
    }
  });
  var debounceLoadMore = window.globalUtils.debouce(function () {
    if (flag_is_loading) return;
    flag_page_number += 1;
    if (flag_page_number > flag_total_pager) return;
    fetchTags(search_text, flag_page_number);
  }, 350);
  
  function fetchTags(search, page) {
    var searchParams = search || "";
    var pageParams = page || 1;
  
    if (flag_is_loading) return;
    flag_is_loading = true;
  
    $.ajax({
      url: "/" + gon.user_project + "/tags/names.json",
      data: {
        search: searchParams,
        page: pageParams,
      },
      type: "GET",
      xhrFields: {
        withCredentials: true,
      },
      success: function (data) {
        flag_total_pager = data.total_pages;
        if (pageParams === 1) {
          $tagsDropdown.html('');
        }
        data.tags.forEach((tag) => {
          const itemDiv = document.createElement('div');
          itemDiv.classList.add('item');
          itemDiv.setAttribute('data-value', tag.name);
          itemDiv.innerText = window.filterXSS(tag.name);
          $tagsDropdown.append(itemDiv)
        });
        if (pageParams === 1 && data.count === 0) {
          toggleNoResultView($tagsDropdown);
        }
      },
      error: function () {
      },
      complete: function () {
        flag_is_loading = false;
      },
    });
  }
  $('.project-branch-tab-menu').on('click','.tab-menu-item', function (e) {
    var $currentTab = $(this).data('tab')
    if($currentTab === 'branches') {
      $searchNameInput.val('')
      search_text = '';
      loadData()
    }
    if($currentTab === 'tags') {
      $searchNameInput.val('')
      search_text = '';
      fetchTags();
    }
  })
</script>

<script>
  $(function () {
    Gitee.initTabsInDropdown($('#git-project-branch').dropdown({
      fullTextSearch: true,
      selectOnKeydown: false,
      action: function (text,value,el) {
        var oItemOrInitObject = el[0] || el
        var isNotSelect = oItemOrInitObject.dataset.tab && oItemOrInitObject.dataset.tab === 'branches'
        if(isNotSelect){
          console.warn("You didn't choose a branch")
          return
        }
        var path = $('#path').val();
        var href = ['/yzk_11/love_code/tree', encodeURIComponent(value), path].join('/');
        window.location.href = href;
        return true
      },
      onNoResults: function (searchTerm) {
        //未找到结果
        return true
      },
    }));
    $('.protected-branch-popup').popup()
  })
</script>

</div>
</div>
<div class='git-project-right-actions pull-right'>
<div class='ui orange button' id='btn-dl-or-clone'>
克隆/下载
<i class='dropdown icon'></i>
</div>
<div class='ui small modal' id='git-project-download-panel'>
<i class='iconfont icon-close close'></i>
<div class='header'>
克隆/下载
</div>
<div class='content'>
<div class='ui secondary pointing menu mb-2 menu-container'>
<a class='item active' data-text='' data-type='http' data-url='https://gitee.com/yzk_11/love_code.git'>HTTPS</a>
<a class='item' data-text='' data-type='ssh' data-url='git@gitee.com:yzk_11/love_code.git'>SSH</a>
<a class='item' data-text="该仓库未启用SVN访问，请仓库管理员前往【&lt;a target='_blank' href=/yzk_11/love_code/settings#function&gt;仓库设置&lt;/a&gt;】开启。" data-type='svn' data-url=''>SVN</a>
<a class='item' data-text="该仓库未启用SVN访问，请仓库管理员前往【&lt;a target='_blank' href=/yzk_11/love_code/settings#function&gt;仓库设置&lt;/a&gt;】开启。" data-type='svn_ssh' data-url=''>SVN+SSH</a>
<a class="button-box ui basic orange button" sa_evt="repoDownload" sa_repo_id="26207980" sa_is_self="true" sa_is_member="true" href="/yzk_11/love_code/repository/archive/master.zip"><i class='icon download'></i>
下载ZIP
</a></div>
<div class='ui fluid right labeled small input download-url-panel mb-2'>
<input type="text" name="project_url_clone" id="project_url_clone" value="https://gitee.com/yzk_11/love_code.git" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#project_url_clone' id='btn-copy-project_clone_url1'></i>
</div>
</div>
<div class='tip-box mb-2'>
提示
</div>
<div class='mb-1 clone-url-title'>
下载代码请复制以下命令到终端执行
</div>
<div class='ui fluid right labeled small input download-url-panel mb-2'>
<input type="text" name="project_clone_url" id="project_clone_url" value="https://gitee.com/yzk_11/love_code.git" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#project_clone_url' id='btn-copy-project_clone_url'></i>
</div>
</div>
<div class='ui fluid right labeled warning-text forbid-warning-text'>

</div>
<div class='http-ssh-item mb-2'>
<div>
为确保你提交的代码身份被 Gitee 正确识别，请执行以下命令完成配置
</div>
<div class='textarea-box mt-2'>
<textarea class='textarea-content-box' id='global-config-clone' readonly>git config --global user.name '11路' &#10git config --global user.email '1594093287@qq.com'</textarea>
<i class='icon iconfont icon-clone mr-2 btn-copy-clone text-dark' data-clipboard-target='#global-config-clone' id='btn-copy-global-config'></i>
</div>
</div>
<div class='ssh-item item-panel-box'>
<div class='mb-2'>
初次使用 SSH 协议进行代码克隆、推送等操作时，需按下述提示完成 SSH 配置
</div>
<div class='mb-1'>
<span>1</span>
生成 RSA 密钥
</div>
<div class='ui fluid right labeled small input mb-2'>
<input type="text" name="ssh_keygen_clone" id="ssh_keygen_clone" value="ssh-keygen -t rsa" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#ssh_keygen_clone' id='btn-copy-ssh_keygen'></i>
</div>
</div>
<div class='mb-1'>
<span>2</span>
获取 RSA 公钥内容，并配置到<a href='/profile/sshkeys' target="_blank"> SSH公钥 </a> 中
</div>
<div class='ui fluid right labeled small input mb-2'>
<input type="text" name="id_rsa_clone" id="id_rsa_clone" value="cat ~/.ssh/id_rsa.pub" onclick="focus();select()" readonly="readonly" />
<div class='ui basic label copy-icon-box'>
<i class='icon iconfont icon-clone mr-0 btn-copy-clone' data-clipboard-target='#id_rsa_clone' id='btn-copy-d_rsa'></i>
</div>
</div>
</div>
<div class='svn-item item-panel-box'>
<div class='mb-1 mt-2'>
在 Gitee 上使用 SVN，请访问<a href='https://help.gitee.com/enterprise/code-manage/%E4%BB%A3%E7%A0%81%E6%89%98%E7%AE%A1/%E4%BB%A3%E7%A0%81%E4%BB%93%E5%BA%93/Gitee%20SVN%E6%94%AF%E6%8C%81' target="_blank"> 使用指南 </a>
</div>
</div>
<div class='http-item item-panel-box'>
<div class='mb-2 mt-2'>
使用 HTTPS 协议时，命令行会出现如下账号密码验证步骤。基于安全考虑，Gitee 建议<a href='/profile/personal_access_tokens' target="_blank"> 配置并使用私人令牌 </a>替代登录密码进行克隆、推送等操作
</div>
<div>
Username for 'https://gitee.com': yzk_11
</div>
<div class='mb-1'>
<span>
Password for 'https://yzk_11@gitee.com':
</span>
<span>
私人令牌
</span>
</div>
</div>
</div>
</div>
<style>
  #git-project-download-panel {
    top: 90px !important; }
    #git-project-download-panel input {
      color: #40485b !important; }
    #git-project-download-panel .textarea-box {
      width: 100%;
      height: 60px;
      color: #9d9d9d;
      border-radius: 2px;
      background-color: #F5F5F5 !important;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center; }
    #git-project-download-panel .menu-container {
      font-weight: bold;
      border-color: rgba(0, 0, 0, 0.1) !important;
      border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important; }
      #git-project-download-panel .menu-container .item {
        padding: 7px 12px !important; }
    #git-project-download-panel .hr-item {
      color: rgba(39, 41, 43, 0.15) !important; }
    #git-project-download-panel .textarea-content-box {
      width: 100%;
      height: 60px;
      resize: none;
      border: 0px !important;
      background-color: #F5F5F5 !important;
      color: #40485b !important; }
    #git-project-download-panel .btn-copy-clone {
      cursor: pointer;
      color: rgba(0, 0, 0, 0.87) !important; }
    #git-project-download-panel .copy-icon-box {
      background-color: #F5F5F5 !important;
      border-left: 0px !important; }
    #git-project-download-panel .button-box {
      border: 0px !important;
      float: right !important;
      padding-right: 0 !important; }
    #git-project-download-panel .tip-box {
      border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;
      padding-bottom: 4px;
      font-weight: 700; }
    #git-project-download-panel .popup-container {
      padding: 8px 12px 4px 12px;
      text-align: center;
      font-size: 14px; }
      #git-project-download-panel .popup-container .ok {
        margin: 12px auto;
        width: 25%;
        min-width: 125px;
        display: block; }
      #git-project-download-panel .popup-container .cancel {
        margin-left: 0; }
</style>
<script>
  $(function () {
    var $btnClone = $('#btn-dl-or-clone')
    var $modalDownload = $('#git-project-download-panel');
    var $input = $('#project_clone_url')
    var $inputUrl = $('#project_url_clone')
    var cloneUrlTitle= $('.clone-url-title')
  
    $('#btn-dl-or-clone').on('click', function (e) {
      e.preventDefault();
      $modalDownload.modal('show');
    })
  
    $modalDownload.find('.menu > .item').on('click', function(e) {
      var $item = $(this).addClass('active');
      $item.siblings().removeClass('active');
      var dataUrl = $item.attr('data-url');
      var cloneUrl = $item.attr('data-url');
      var dataType = $item.attr('data-type')
      var cloneToLocal = '下载代码请复制以下命令到终端执行'
      if(dataType=='http'){
        $modalDownload.find('.http-item').show();
        $('.content > .item-panel-box:not(.http-item)').hide();
        $modalDownload.find('.http-ssh-item').show();
        cloneUrl = 'git clone '+dataUrl
      }else if(dataType=='ssh'){
        $modalDownload.find('.ssh-item').show();
        $('.content > .item-panel-box:not(.ssh-item)').hide();
        $modalDownload.find('.http-ssh-item').show();
        cloneUrl = 'git clone '+dataUrl
      }else if(dataType=='svn') {
        $('.content > .item-panel-box:not(.svn-item)').hide();
        $modalDownload.find('.svn-item').show();
        $modalDownload.find('.http-ssh-item').hide();
        cloneUrl = 'svn checkout '+dataUrl
      }else {
        $('.content > .item-panel-box:not(.svn-item)').hide();
        $modalDownload.find('.svn-item').show();
        $modalDownload.find('.http-ssh-item').hide();
        cloneUrl = 'svn checkout '+dataUrl
      }
      if (dataUrl) {
        $modalDownload.find('.download-url-panel').show();
        $input.val(cloneUrl);
        $inputUrl.val(dataUrl)
        cloneUrlTitle.show();
        $modalDownload.find('.forbid-warning-text').html('');
      } else {
        $modalDownload.find('.download-url-panel').hide();
        //$modalDownload.find('.svn-item').hide();
        cloneUrlTitle.hide();
        $modalDownload.find('.forbid-warning-text').html($item.attr('data-text') || '');
      }
      $.cookie('remote_way', $item.attr('data-type'), { expires: 365, path: '/' });
    }).filter('[data-type="' + ($.cookie('remote_way') || 'http') + '"]').trigger('click');
  
    $('.btn-copy-clone').popup({
      content: '点击复制',
    }).on('click', function(e) {
      e.stopPropagation();
      return false;
    }).each(function(_, btnCopy) {
      var $btnCopy = $(btnCopy);
      new Clipboard(btnCopy).on('success', function() {
        $btnCopy.popup('destroy').popup({
          content: '已复制',
          on: 'manual'
        }).popup('show');
        setTimeout(function() {
          $btnCopy.popup('destroy').popup({
            content: '点击复制'
          });
        }, 2000);
      });
    });
    var $downloadBtn= $('.unlogin-download-btn')
    var $popupContainer = $('.popup-container')
    $downloadBtn.popup({
      popup : $('.custom.popup'),
      position   : 'bottom right',
    }).on('click', function(e) {
      $downloadBtn.popup('destroy').popup({
        popup : $('.custom.popup'),
        on: 'manual',
        position   : 'bottom right',
      }).popup('show');
      setTimeout(function() {
        $downloadBtn.popup('hide');
      }, 2000);
  
    })
  })
</script>

</div>
<div class='d-inline pull-right' id='git-project-root-actions'>
<div class='ui horizontal list repo-action-list d-flex d-align-center repo-action-list-right'>
<div class='item search-box-container'>
<div class='ui icon input search-input' id='search-box'>
<input class='search-file-name' id='search-file-name' maxlength='40' placeholder='搜索文件' type='text'>
</div>
<a class='d-flex d-align-center' id='search-file-btn'>
<span class='iconify' data-icon='gitee:search' style='font-size: 16px;color:#979CAC;margin-right:10px'></span>
</a>
<div class='filter-file-container' style='display: none;'></div>
</div>
<script>
  $('#git-tree-file').dropdown({
    action: 'hide',
    onHide: function () {
      $('.plus-box').removeClass('click-active')
    },
    onShow: function () {
      $('.plus-box').addClass('click-active')
    }
  });
  $('.disabled-upload-readonly').popup({
    content: "只读目录不允许上传文件",
    className: {
      popup: 'ui popup',
    },
    position: 'bottom center',
  })
  $('.disabled-create-folder').popup({
    content: "只读目录不允许创建目录",
    className: {
      popup: 'ui popup',
    },
    position: 'bottom center',
  })
  $('.disabled-create-file').popup({
    content: "只读目录不允许创建文件",
    className: {
      popup: 'ui popup',
    },
    position: 'bottom center',
  })
  $('.disabled-create-submodule').popup({
    content: "只读目录不允许创建子模块",
    className: {
      popup: 'ui popup',
    },
    position: 'bottom center',
  })
  $('.disabled-upload-readonly, .disabled-create-folder, .disabled-create-file, .disabled-create-submodule').click(function() {
    return false
  })
</script>
<style>
  .disabled-upload-readonly, .disabled-create-file, .disabled-create-folder, .disabled-create-submodule {
    background-color: #dcddde !important;
    color: rgba(0, 0, 0, 0.4) !important;
    opacity: 0.3 !important;
    background-image: none !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important; }
</style>

<div class='item toschina-content__hidden webIDE-box' data-content='Web IDE'>
<a class="ui d-flex d-align-center webide ml-1" target="_blank" href="/-/ide/project/yzk_11/love_code/edit/master/-/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html"><span class='iconify' data-icon='gitee:computer' style='font-size: 16px;color:#979CAC;margin-right:12px'></span>
</a></div>
</div>
<script>
  $('.webIDE-box').popup()
</script>
<script src="https://cn-assets.gitee.com/assets/file_search/app-7488efdce7782c80c4936145b910d07e.js"></script>

</div>
<div class='breadcrumb_path path-breadcrumb-contrainer' id='git-project-breadcrumb'>
<div class='ui breadcrumb path project-path-breadcrumb' id='path-breadcrumb'>
<a data-direction="back" class="section repo-name" style="font-weight: bold" href="/yzk_11/love_code/tree/master">love_code
</a><div class='divider'>
/
</div>
<strong>
💗 Love you 💗.html
</strong>
<i class='iconfont icon-clone' data-clipboard-text='💗 Love you 💗.html' id='btn-copy-file-path'></i>
</div>
<style>
  #btn-copy-file-path {
    vertical-align: middle;
    cursor: pointer;
  }
</style>
<script>
  $btnCopy = $('#btn-copy-file-path')
  $btnCopy.popup({
    content: '复制路径'
  })
  
  if ($btnCopy[0]) {
    new Clipboard($btnCopy[0]).on('success', function() {
      $btnCopy.popup('destroy').popup({
        content: '已复制',
        on: 'manual'
      }).popup('show');
      setTimeout(function () {
        $btnCopy.popup('destroy').popup({
          content: '复制路径'
        });
      }, 2000)
    });
  }
</script>


</div>
<div class='ui horizontal list repo-action-list branches-tags' style='display: none;'>
<div class='item'>
<a class="ui blank button" href="/yzk_11/love_code/branches"><i class='iconfont icon-branches'></i>
分支 1
</a></div>
<div class='item mr-3'>
<a class="ui blank button" href="/yzk_11/love_code/tags"><i class='iconfont icon-tag'></i>
标签 0
</a></div>
</div>
</div>
<script src="https://cn-assets.gitee.com/webpacks/parse_blob_form_scheme-546413cc929b44c3e774.bundle.js"></script>
<script>
  if(window.gon.locale == 'en')
    $('.branches-tags').css('margin-top', '12px')
   // 仓库页面切换路径时: 刷新 yaml 错误检查
  $(window).on('pjax-complete:file-show', function () {
    window.parseBlobFormScheme && window.parseBlobFormScheme($('.js-blob-data').data('blob'));
  });
</script>

<style>
  .ui.dropdown .menu > .header {
    text-transform: none; }
</style>
<script>
  $(function () {
    var $tip = $('#apk-download-tip');
    if (!$tip.length) {
      return;
    }
    $tip.find('.btn-close').on('click', function () {
      $tip.hide();
    });
  });
  (function(){
    function pathAutoRender() {
      var $parent = $('#git-project-bread'),
          $child = $('#git-project-bread').children('.ui.horizontal.list'),
          mainWidth = 0;
      $child.each(function (i,item) {
        mainWidth += $(item).width()
      });
      $('.breadcrumb.path.fork-path').remove();
      if (mainWidth > 995) {
        $('#path-breadcrumb').hide();
        $parent.append('<div class="ui breadcrumb path fork-path">' + $('#path-breadcrumb').html() + '<div/>')
      } else {
        $('#path-breadcrumb').show();
      }
    }
    window.pathAutoRender = pathAutoRender;
    pathAutoRender();
  })();
</script>

<div class='row column tree-holder' id='tree-holder'>
<div class='tree-content-holder' id='tree-content-holder'>
<div class='file_holder'>
<div class='file_title'>
<div class='blob-header-title'>
<div class='blob-description'>
<i class="iconfont icon-file"></i>
<span class='file_name' title='💗 Love you 💗.html'>
💗 Love you 💗.html
</span>
<small>14.91 KB</small>
</div>
<div class='options'><div class='js-code-parsing code-parsing-btn ui pointing right top dropdown'>
<img class='' height='37' src='/static/images/ma_icon.svg' width='33'>
<div class='btn'>
<span>马建仓 AI 助手</span>
<i class='dropdown icon'></i>
</div>
<div class='menu ai-code-dropdown-box pt-1 pb-1'>
<span class='item' data-text='代码解读' data-value='parsing'>代码解读</span>
<span class='item' data-text='代码找茬' data-value='analysis'>代码找茬</span>
<span class='item' data-text='代码优化' data-value='optimize'>代码优化</span>
</div>
</div>
<div class='ui mini buttons basic'>
<textarea name="blob_raw" id="blob_raw" style="display:none;">
&lt;!DOCTYPE html&gt;&#x000A;&lt;!-- saved from url=(0051)https://httishere.gitee.io/notion/v4/love-name.html --&gt;&#x000A;&lt;html&gt;&lt;head&gt;&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;&#x000A;    &#x000A;    &lt;title&gt;💗 Love you 💗&lt;/title&gt;&#x000A;    &lt;style type=&quot;text/css&quot;&gt;&#x000A;      body {&#x000A;        margin: 0;&#x000A;        overflow: hidden;&#x000A;        background: #000;&#x000A;      }&#x000A;      canvas {&#x000A;        position: absolute;&#x000A;        width: 100%;&#x000A;        height: 100%;&#x000A;      }&#x000A;      #pinkboard {&#x000A;        animation: anim 1.5s ease-in-out infinite;&#x000A;        -webkit-animation: anim 1.5s ease-in-out infinite;&#x000A;        -o-animation: anim 1.5s ease-in-out infinite;&#x000A;        -moz-animation: anim 1.5s ease-in-out infinite;&#x000A;      }&#x000A;      @keyframes anim {&#x000A;        0% {&#x000A;          transform: scale(0.8);&#x000A;        }&#x000A;        25% {&#x000A;          transform: scale(0.7);&#x000A;        }&#x000A;        50% {&#x000A;          transform: scale(1);&#x000A;        }&#x000A;        75% {&#x000A;          transform: scale(0.7);&#x000A;        }&#x000A;        100% {&#x000A;          transform: scale(0.8);&#x000A;        }&#x000A;      }&#x000A;      @-webkit-keyframes anim {&#x000A;        0% {&#x000A;          -webkit-transform: scale(0.8);&#x000A;        }&#x000A;        25% {&#x000A;          -webkit-transform: scale(0.7);&#x000A;        }&#x000A;        50% {&#x000A;          -webkit-transform: scale(1);&#x000A;        }&#x000A;        75% {&#x000A;          -webkit-transform: scale(0.7);&#x000A;        }&#x000A;        100% {&#x000A;          -webkit-transform: scale(0.8);&#x000A;        }&#x000A;      }&#x000A;      @-o-keyframes anim {&#x000A;        0% {&#x000A;          -o-transform: scale(0.8);&#x000A;        }&#x000A;        25% {&#x000A;          -o-transform: scale(0.7);&#x000A;        }&#x000A;        50% {&#x000A;          -o-transform: scale(1);&#x000A;        }&#x000A;        75% {&#x000A;          -o-transform: scale(0.7);&#x000A;        }&#x000A;        100% {&#x000A;          -o-transform: scale(0.8);&#x000A;        }&#x000A;      }&#x000A;      @-moz-keyframes anim {&#x000A;        0% {&#x000A;          -moz-transform: scale(0.8);&#x000A;        }&#x000A;        25% {&#x000A;          -moz-transform: scale(0.7);&#x000A;        }&#x000A;        50% {&#x000A;          -moz-transform: scale(1);&#x000A;        }&#x000A;        75% {&#x000A;          -moz-transform: scale(0.7);&#x000A;        }&#x000A;        100% {&#x000A;          -moz-transform: scale(0.8);&#x000A;        }&#x000A;      }&#x000A;      #name {&#x000A;        position: absolute;&#x000A;        top: 50%;&#x000A;        left: 50%;&#x000A;        transform: translate(-50%, -50%);&#x000A;        margin-top: -20px;&#x000A;        font-size: 46px;&#x000A;        color: #ea80b0;&#x000A;      }&#x000A;    &lt;/style&gt;&#x000A;  &lt;/head&gt;&#x000A;  &lt;body&gt;&#x000A;    &lt;canvas id=&quot;pinkboard&quot; width=&quot;1536&quot; height=&quot;722&quot;&gt;&lt;/canvas&gt;&#x000A;    &lt;!-- &lt;div id=&quot;name&quot;&gt;周远美 ❤️&lt;/div&gt; --&gt;&#x000A;    &lt;canvas id=&quot;canvas&quot; width=&quot;1536&quot; height=&quot;676&quot;&gt;&lt;/canvas&gt;&#x000A;&#x000A;    &lt;script type=&quot;text/javascript&quot;&gt;&#x000A;      const colors = [&#x000A;        &quot;#eec996&quot;,&#x000A;        &quot;#8fb7d3&quot;,&#x000A;        &quot;#b7d4c6&quot;,&#x000A;        &quot;#c3bedd&quot;,&#x000A;        &quot;#f1d5e4&quot;,&#x000A;        &quot;#cae1d3&quot;,&#x000A;        &quot;#f3c89d&quot;,&#x000A;        &quot;#d0b0c3&quot;,&#x000A;        &quot;#819d53&quot;,&#x000A;        &quot;#c99294&quot;,&#x000A;        &quot;#cec884&quot;,&#x000A;        &quot;#ff8e70&quot;,&#x000A;        &quot;#e0a111&quot;,&#x000A;        &quot;#fffdf6&quot;,&#x000A;        &quot;#cbd7ac&quot;,&#x000A;        &quot;#e8c6c0&quot;,&#x000A;        &quot;#dc9898&quot;,&#x000A;        &quot;#ecc8ba&quot;,&#x000A;      ]; //用来设置的颜色&#x000A;      var canvas = document.getElementById(&quot;canvas&quot;);&#x000A;      var ctx = canvas.getContext(&quot;2d&quot;);&#x000A;      let count = 1;&#x000A;&#x000A;      var ww = window.innerWidth;&#x000A;      var wh = window.innerHeight;&#x000A;&#x000A;      var hearts = [];&#x000A;&#x000A;      function init() {&#x000A;        requestAnimationFrame(render);&#x000A;        canvas.width = ww;&#x000A;        canvas.height = wh;&#x000A;        for (var i = 0; i &lt; 100; i++) {&#x000A;          hearts.push(new Heart());&#x000A;        }&#x000A;      }&#x000A;&#x000A;      function Heart() {&#x000A;        this.x = Math.random() * ww;&#x000A;        this.y = Math.random() * wh;&#x000A;        this.opacity = Math.random() * 0.5 + 0.5;&#x000A;        this.vel = {&#x000A;          x: (Math.random() - 0.5) * 4,&#x000A;          y: (Math.random() - 0.5) * 4,&#x000A;        };&#x000A;        this.targetScale = Math.random() * 0.15 + 0.02;&#x000A;        this.scale = this.targetScale * Math.random();&#x000A;      }&#x000A;&#x000A;      Heart.prototype.update = function (i) {&#x000A;        this.x += this.vel.x;&#x000A;        this.y += this.vel.y;&#x000A;&#x000A;        this.scale += (this.targetScale - this.scale) * 0.01;&#x000A;        if (this.x - this.width &gt; ww || this.x + this.width &lt; 0) {&#x000A;          this.scale = 0;&#x000A;          this.x = Math.random() * ww;&#x000A;        }&#x000A;        if (this.y - this.height &gt; wh || this.y + this.height &lt; 0) {&#x000A;          this.scale = 0;&#x000A;          this.y = Math.random() * wh;&#x000A;        }&#x000A;        this.width = 473.8;&#x000A;        this.height = 408.6;&#x000A;      };&#x000A;      Heart.prototype.draw = function (i) {&#x000A;        ctx.globalAlpha = this.opacity;&#x000A;        ctx.font = `${180 * this.scale}px &quot;微软雅黑&quot;`;&#x000A;        // ctx.font=&quot;20px&quot;;&#x000A;        ctx.fillStyle = colors[i % 18];&#x000A;        ctx.fillText(&#x000A;          &quot;周远美&quot;,&#x000A;          this.x - this.width * 0.5,&#x000A;          this.y - this.height * 0.5,&#x000A;          this.width,&#x000A;          this.height&#x000A;        );&#x000A;        // ctx.drawImage(&#x000A;        //   heartImage,&#x000A;        //   this.x - this.width * 0.5,&#x000A;        //   this.y - this.height * 0.5,&#x000A;        //   this.width,&#x000A;        //   this.height&#x000A;        // );&#x000A;      };&#x000A;&#x000A;      function render() {&#x000A;        ctx.clearRect(0, 0, ww, wh);&#x000A;        // ctx.globalAlpha = 1;&#x000A;        // ctx.fillStyle = &quot;rgba(255,255,255,0.3)&quot;;&#x000A;        // ctx.fillRect(0, 0, ww, wh);&#x000A;        for (var i = 0; i &lt; 100; i++) {&#x000A;          hearts[i].update(i);&#x000A;          hearts[i].draw(i);&#x000A;        }&#x000A;        requestAnimationFrame(render);&#x000A;      }&#x000A;      init();&#x000A;&#x000A;      // var heartImage = new Image();&#x000A;      // heartImage.onload = init();&#x000A;      // heartImage.src =&#x000A;      //   &quot;&quot;;&#x000A;&#x000A;      window.addEventListener(&quot;resize&quot;, function () {&#x000A;        ww = window.innerWidth;&#x000A;        wh = window.innerHeight;&#x000A;      });&#x000A;    &lt;/script&gt;&#x000A;    &lt;script&gt;&#x000A;      /*&#x000A;       * Settings&#x000A;       */&#x000A;      var settings = {&#x000A;        particles: {&#x000A;          length: 500, // maximum amount of particles&#x000A;          duration: 2, // particle duration in sec&#x000A;          velocity: 100, // particle velocity in pixels/sec&#x000A;          effect: -0.75, // play with this for a nice effect&#x000A;          size: 30, // particle size in pixels&#x000A;        },&#x000A;      };&#x000A;&#x000A;      /*&#x000A;       * RequestAnimationFrame polyfill by Erik M?ller&#x000A;       */&#x000A;      (function () {&#x000A;        var b = 0;&#x000A;        var c = [&quot;ms&quot;, &quot;moz&quot;, &quot;webkit&quot;, &quot;o&quot;];&#x000A;        for (var a = 0; a &lt; c.length &amp;&amp; !window.requestAnimationFrame; ++a) {&#x000A;          window.requestAnimationFrame = window[c[a] + &quot;RequestAnimationFrame&quot;];&#x000A;          window.cancelAnimationFrame =&#x000A;            window[c[a] + &quot;CancelAnimationFrame&quot;] ||&#x000A;            window[c[a] + &quot;CancelRequestAnimationFrame&quot;];&#x000A;        }&#x000A;        if (!window.requestAnimationFrame) {&#x000A;          window.requestAnimationFrame = function (h, e) {&#x000A;            var d = new Date().getTime();&#x000A;            var f = Math.max(0, 16 - (d - b));&#x000A;            var g = window.setTimeout(function () {&#x000A;              h(d + f);&#x000A;            }, f);&#x000A;            b = d + f;&#x000A;            return g;&#x000A;          };&#x000A;        }&#x000A;        if (!window.cancelAnimationFrame) {&#x000A;          window.cancelAnimationFrame = function (d) {&#x000A;            clearTimeout(d);&#x000A;          };&#x000A;        }&#x000A;      })();&#x000A;&#x000A;      /*&#x000A;       * Point class&#x000A;       */&#x000A;      var Point = (function () {&#x000A;        function Point(x, y) {&#x000A;          this.x = typeof x !== &quot;undefined&quot; ? x : 0;&#x000A;          this.y = typeof y !== &quot;undefined&quot; ? y : 0;&#x000A;        }&#x000A;        Point.prototype.clone = function () {&#x000A;          return new Point(this.x, this.y);&#x000A;        };&#x000A;        Point.prototype.length = function (length) {&#x000A;          if (typeof length == &quot;undefined&quot;)&#x000A;            return Math.sqrt(this.x * this.x + this.y * this.y);&#x000A;          this.normalize();&#x000A;          this.x *= length;&#x000A;          this.y *= length;&#x000A;          return this;&#x000A;        };&#x000A;        Point.prototype.normalize = function () {&#x000A;          var length = this.length();&#x000A;          this.x /= length;&#x000A;          this.y /= length;&#x000A;          return this;&#x000A;        };&#x000A;        return Point;&#x000A;      })();&#x000A;&#x000A;      /*&#x000A;       * Particle class&#x000A;       */&#x000A;&#x000A;      var Particle = (function () {&#x000A;        function Particle() {&#x000A;          this.position = new Point();&#x000A;          this.velocity = new Point();&#x000A;          this.acceleration = new Point();&#x000A;          this.age = 0;&#x000A;        }&#x000A;        Particle.prototype.initialize = function (x, y, dx, dy) {&#x000A;          this.position.x = x;&#x000A;          this.position.y = y;&#x000A;          this.velocity.x = dx;&#x000A;          this.velocity.y = dy;&#x000A;          this.acceleration.x = dx * settings.particles.effect;&#x000A;          this.acceleration.y = dy * settings.particles.effect;&#x000A;          this.age = 0;&#x000A;        };&#x000A;        Particle.prototype.update = function (deltaTime) {&#x000A;          this.position.x += this.velocity.x * deltaTime;&#x000A;          this.position.y += this.velocity.y * deltaTime;&#x000A;          this.velocity.x += this.acceleration.x * deltaTime;&#x000A;          this.velocity.y += this.acceleration.y * deltaTime;&#x000A;          this.age += deltaTime;&#x000A;        };&#x000A;        Particle.prototype.draw = function (context, image) {&#x000A;          function ease(t) {&#x000A;            return --t * t * t + 1;&#x000A;          }&#x000A;          var size = image.width * ease(this.age / settings.particles.duration);&#x000A;          context.globalAlpha = 1 - this.age / settings.particles.duration;&#x000A;          context.drawImage(&#x000A;            image,&#x000A;            this.position.x - size / 2,&#x000A;            this.position.y - size / 2,&#x000A;            size,&#x000A;            size&#x000A;          );&#x000A;        };&#x000A;        return Particle;&#x000A;      })();&#x000A;&#x000A;      /*&#x000A;       * ParticlePool class&#x000A;       */&#x000A;      var ParticlePool = (function () {&#x000A;        var particles,&#x000A;          firstActive = 0,&#x000A;          firstFree = 0,&#x000A;          duration = settings.particles.duration;&#x000A;&#x000A;        function ParticlePool(length) {&#x000A;          // create and populate particle pool&#x000A;          particles = new Array(length);&#x000A;          for (var i = 0; i &lt; particles.length; i++)&#x000A;            particles[i] = new Particle();&#x000A;        }&#x000A;        ParticlePool.prototype.add = function (x, y, dx, dy) {&#x000A;          particles[firstFree].initialize(x, y, dx, dy);&#x000A;&#x000A;          // handle circular queue&#x000A;          firstFree++;&#x000A;          if (firstFree == particles.length) firstFree = 0;&#x000A;          if (firstActive == firstFree) firstActive++;&#x000A;          if (firstActive == particles.length) firstActive = 0;&#x000A;        };&#x000A;        ParticlePool.prototype.update = function (deltaTime) {&#x000A;          var i;&#x000A;&#x000A;          // update active particles&#x000A;          if (firstActive &lt; firstFree) {&#x000A;            for (i = firstActive; i &lt; firstFree; i++)&#x000A;              particles[i].update(deltaTime);&#x000A;          }&#x000A;          if (firstFree &lt; firstActive) {&#x000A;            for (i = firstActive; i &lt; particles.length; i++)&#x000A;              particles[i].update(deltaTime);&#x000A;            for (i = 0; i &lt; firstFree; i++) particles[i].update(deltaTime);&#x000A;          }&#x000A;&#x000A;          // remove inactive particles&#x000A;          while (&#x000A;            particles[firstActive].age &gt;= duration &amp;&amp;&#x000A;            firstActive != firstFree&#x000A;          ) {&#x000A;            firstActive++;&#x000A;            if (firstActive == particles.length) firstActive = 0;&#x000A;          }&#x000A;        };&#x000A;        ParticlePool.prototype.draw = function (context, image) {&#x000A;          // draw active particles&#x000A;          if (firstActive &lt; firstFree) {&#x000A;            for (i = firstActive; i &lt; firstFree; i++)&#x000A;              particles[i].draw(context, image);&#x000A;          }&#x000A;          if (firstFree &lt; firstActive) {&#x000A;            for (i = firstActive; i &lt; particles.length; i++)&#x000A;              particles[i].draw(context, image);&#x000A;            for (i = 0; i &lt; firstFree; i++) particles[i].draw(context, image);&#x000A;          }&#x000A;        };&#x000A;        return ParticlePool;&#x000A;      })();&#x000A;&#x000A;      /*&#x000A;       * Putting it all together&#x000A;       */&#x000A;      (function (canvas) {&#x000A;        var context = canvas.getContext(&quot;2d&quot;),&#x000A;          particles = new ParticlePool(settings.particles.length),&#x000A;          particleRate =&#x000A;            settings.particles.length / settings.particles.duration, // particles/sec&#x000A;          time;&#x000A;&#x000A;        // get point on heart with -PI &lt;= t &lt;= PI&#x000A;        function pointOnHeart(t) {&#x000A;          return new Point(&#x000A;            160 * Math.pow(Math.sin(t), 3),&#x000A;            130 * Math.cos(t) -&#x000A;              50 * Math.cos(2 * t) -&#x000A;              20 * Math.cos(3 * t) -&#x000A;              10 * Math.cos(4 * t) +&#x000A;              25&#x000A;          );&#x000A;        }&#x000A;&#x000A;        // creating the particle image using a dummy canvas&#x000A;        var image = (function () {&#x000A;          var canvas = document.createElement(&quot;canvas&quot;),&#x000A;            context = canvas.getContext(&quot;2d&quot;);&#x000A;          canvas.width = settings.particles.size;&#x000A;          canvas.height = settings.particles.size;&#x000A;          // helper function to create the path&#x000A;          function to(t) {&#x000A;            var point = pointOnHeart(t);&#x000A;            point.x =&#x000A;              settings.particles.size / 2 +&#x000A;              (point.x * settings.particles.size) / 350;&#x000A;            point.y =&#x000A;              settings.particles.size / 2 -&#x000A;              (point.y * settings.particles.size) / 350;&#x000A;            return point;&#x000A;          }&#x000A;          // create the path&#x000A;          context.beginPath();&#x000A;          var t = -Math.PI;&#x000A;          var point = to(t);&#x000A;          context.moveTo(point.x, point.y);&#x000A;          while (t &lt; Math.PI) {&#x000A;            t += 0.01; // baby steps!&#x000A;            point = to(t);&#x000A;            context.lineTo(point.x, point.y);&#x000A;          }&#x000A;          context.closePath();&#x000A;          // create the fill&#x000A;          context.fillStyle = &quot;#ea80b0&quot;;&#x000A;          context.fill();&#x000A;          // create the image&#x000A;          var image = new Image();&#x000A;          image.src = canvas.toDataURL();&#x000A;          return image;&#x000A;        })();&#x000A;&#x000A;        // render that thing!&#x000A;        function render() {&#x000A;          // next animation frame&#x000A;          requestAnimationFrame(render);&#x000A;&#x000A;          // update time&#x000A;          var newTime = new Date().getTime() / 1000,&#x000A;            deltaTime = newTime - (time || newTime);&#x000A;          time = newTime;&#x000A;&#x000A;          // clear canvas&#x000A;          context.clearRect(0, 0, canvas.width, canvas.height);&#x000A;&#x000A;          // create new particles&#x000A;          var amount = particleRate * deltaTime;&#x000A;          for (var i = 0; i &lt; amount; i++) {&#x000A;            var pos = pointOnHeart(Math.PI - 2 * Math.PI * Math.random());&#x000A;            var dir = pos.clone().length(settings.particles.velocity);&#x000A;            particles.add(&#x000A;              canvas.width / 2 + pos.x,&#x000A;              canvas.height / 2 - pos.y,&#x000A;              dir.x,&#x000A;              -dir.y&#x000A;            );&#x000A;          }&#x000A;&#x000A;          // update and draw particles&#x000A;          particles.update(deltaTime);&#x000A;          particles.draw(context, image);&#x000A;        }&#x000A;&#x000A;        // handle (re-)sizing of the canvas&#x000A;        function onResize() {&#x000A;          canvas.width = canvas.clientWidth;&#x000A;          canvas.height = canvas.clientHeight;&#x000A;        }&#x000A;        window.onresize = onResize;&#x000A;&#x000A;        // delay rendering bootstrap&#x000A;        setTimeout(function () {&#x000A;          onResize();&#x000A;          render();&#x000A;        }, 10);&#x000A;      })(document.getElementById(&quot;pinkboard&quot;));&#x000A;&#x000A;      // 参考：https://blog.csdn.net/weixin_57038822/article/details/121644240&#x000A;    &lt;/script&gt;&#x000A;  &#x000A;&#x000A;&lt;/body&gt;&lt;/html&gt;</textarea>
<a class="ui button" id="copy-text" href="#">一键复制</a>
<a class="ui button edit-blob" title="" href="/yzk_11/love_code/edit/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html">编辑</a>
<a class="ui button edit-raw" target="_blank" href="/yzk_11/love_code/raw/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html">原始数据</a>
<a class="ui button edit-blame" href="/yzk_11/love_code/blame/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html">按行查看</a>
<a class="ui button edit-history" href="/yzk_11/love_code/commits/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html">历史</a>
</div>
<div class='ui mini basic icon-actions'>
<a title="删除文件 master/💗 Love you 💗.html" data-confirm="确定要删除吗？" rel="nofollow" data-method="delete" href="/yzk_11/love_code/delete/blob/master/%F0%9F%92%97%20Love%20you%20%F0%9F%92%97.html"><i class='iconfont icon-delete'></i>
</a></div>
<script>
  window.gon.aiCodeParams = {
    pathWithNamespace: `yzk_11/love_code`,
    blob: $("#blob_raw").val(),
    fileName: `💗 Love you 💗.html`,
    id: `f861c7099578c6b1dd8444d056f638f5f1f4aa3d`,
    timeStamp: `1726918523`,
    userId: `11996704`,
    sign: `l2xDY3HbCfya3OBvJuC++ppHbCzqZ6wHqTVdvbPuQUheXigSEwgqqz4tpz04/jKMCsuy/l0cStxrRWpDdK3gLeVpkyynS21VOjbrH3pA2AamGfX8UChqCuL6QszPCwhNTfTM9S+5fxkmPcCo4jsOhA==`,
  }
  window.gon.blobName = `"💗 Love you 💗.html"`
  $('.js-code-parsing').dropdown({
    on: 'hover',
    action: 'hide',
    onHide: function () {
    },
    onShow: function () {
    }
  });
  $(".ai-code-dropdown-box").find('.item').on("click", function (e) {
    window.jqxhr && window.jqxhr.abort();
    window.aiLoadingTimer && clearTimeout(window.aiLoadingTimer);
    aiReqLoading = false
  
    window.Gitee.setFullscreen(true);
    $(".side-toolbar").hide();
    var $siteContent = $(".site-content");
    // 获取最小高度
    var minHeight = parseInt($siteContent.css("min-height"));
    // 获取当前高度
    var currentHeight = parseInt($siteContent.height());
    if (minHeight + 1 > currentHeight) {
      $("#code-parsing").css("height", currentHeight);
    }
  
    $("#git-project-container").addClass('git-transition-width');
    $("#project-wrapper").css("marginTop", "-24px");
    //$("#git-project-container").removeClass("sixteen wide column");
    //$("#git-project-container").addClass("twelve wide column");
    if(!$("#code-parsing").hasClass("code-parsing-box")){
      $("#git-project-container").attr("style", "width: 75% !important;");
    }
    $("#git-footer-main").css("margin-top", "14px");
    $("#code-parsing").addClass("code-parsing-box");
    $(".code-parsing-content").hide();
    $(".skeleton").show();
    $(".ai_code_btns_simple").hide();
  
    $("#code-parsing").find(".markdown-body").innerHTML='';
  
    aiCodeType = $(this).data("value");
    aiSubTitle = $(this).data("text");
    handleAiReqInit()
  });
</script>
<script>
  "use strict";
  try {
    if((gon.wait_fork!=undefined && gon.wait_fork==true) || (gon.wait_fetch!=undefined && gon.wait_fetch==true)){
      $('.edit-blob').popup({content:"当前仓库正在后台处理中,暂时无法编辑", on: 'hover', delay: { show: 200, hide: 200 }});
      $('.edit-blob').click(function(e){
        e.preventDefault();
      })
    }
  
    var setUrl = function() {
      var params = window.location.search
      if (params==undefined || $.trim(params).length==0) return;
      $('span.options').children('.basic').find('a').each(function(index,ele){
        var origin_href = $(ele).attr('href');
        if (origin_href!="#" && origin_href.indexOf('?') == -1){
          $(ele).attr('href',origin_href+params);
        }
      });
    }
  
    setUrl();
  
    var clipboard = null,
        $btncopy  = $("#copy-text");
  
    clipboard = new Clipboard("#copy-text", {
      text: function(trigger) {
        return $("#blob_raw").val();
      }
    })
  
    clipboard.on('success', function(e) {
      $btncopy.popup('hide');
      $btncopy.popup('destroy');
      $btncopy.popup({content: '已复制', position: 'bottom center'});
      $btncopy.popup('show');
    })
  
    clipboard.on('error', function(e) {
      var giteeModal = new GiteeModalHelper({okText: '确定'});
      giteeModal.alert("一键复制", '复制失败，请手动复制');
    })
  
    $(function() {
      $btncopy.popup({
        content: '点击复制',
        position: 'bottom center'
      })
    })
  
  } catch (error) {
    console.log('blob/action error:' + error);
  }
  
  $(".disabled-edit-readonly").popup({
    content: "只读文件不可编辑",
    className: {
      popup: "ui popup",
    },
    position: "bottom center",
  });
  $(".disabled-edit-readonly, .disabled-edit-status").click(function () {
    return false;
  });
  $(".has_tooltip").popup({
    position: "top center",
  });
</script>
<style>
  .disabled-edit-readonly, .disabled-edit-status {
    background-color: #dcddde !important;
    color: rgba(0, 0, 0, 0.4) !important;
    opacity: 0.3 !important;
    background-image: none !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
    cursor: default !important; }
  
  .drawio-iframe-code-card {
    position: relative; }
    .drawio-iframe-code-card textarea {
      width: 100%;
      height: 140px;
      resize: none; }
    .drawio-iframe-code-card .icon-clone {
      position: absolute;
      right: 32px;
      bottom: 32px; }
    .drawio-iframe-code-card iframe {
      border-radius: 2px;
      border: 1px solid #DEDEDF; }
</style>
</div>
</div>
<div class='blob-header-title mt-1 ubblock_tip'>
</div>
<div class='contributor-description'><span class='recent-commit' style='margin-top: 0.7rem'>
<a class="commit-author-link  js-popover-card " data-username="yzk_11" href="/yzk_11">11路</a>
<span>提交于</span>
<span class='timeago commit-date' title='2024-09-21 11:15:43 +0000'>
2024-09-21 11:15
</span>
.
<a href="/yzk_11/love_code/commit/38592eb18974c3c0cf1116a1fe250411aac3b6a3">update 💗 Love you 💗.html.</a>
</span>
</div>
</div>
<div class='clearfix'></div>
<div class='file_content code'>
<div class='lines white'>
<div class='line-numbers'><a href='#L1' id='L1'>1</a><a href='#L2' id='L2'>2</a><a href='#L3' id='L3'>3</a><a href='#L4' id='L4'>4</a><a href='#L5' id='L5'>5</a><a href='#L6' id='L6'>6</a><a href='#L7' id='L7'>7</a><a href='#L8' id='L8'>8</a><a href='#L9' id='L9'>9</a><a href='#L10' id='L10'>10</a><a href='#L11' id='L11'>11</a><a href='#L12' id='L12'>12</a><a href='#L13' id='L13'>13</a><a href='#L14' id='L14'>14</a><a href='#L15' id='L15'>15</a><a href='#L16' id='L16'>16</a><a href='#L17' id='L17'>17</a><a href='#L18' id='L18'>18</a><a href='#L19' id='L19'>19</a><a href='#L20' id='L20'>20</a><a href='#L21' id='L21'>21</a><a href='#L22' id='L22'>22</a><a href='#L23' id='L23'>23</a><a href='#L24' id='L24'>24</a><a href='#L25' id='L25'>25</a><a href='#L26' id='L26'>26</a><a href='#L27' id='L27'>27</a><a href='#L28' id='L28'>28</a><a href='#L29' id='L29'>29</a><a href='#L30' id='L30'>30</a><a href='#L31' id='L31'>31</a><a href='#L32' id='L32'>32</a><a href='#L33' id='L33'>33</a><a href='#L34' id='L34'>34</a><a href='#L35' id='L35'>35</a><a href='#L36' id='L36'>36</a><a href='#L37' id='L37'>37</a><a href='#L38' id='L38'>38</a><a href='#L39' id='L39'>39</a><a href='#L40' id='L40'>40</a><a href='#L41' id='L41'>41</a><a href='#L42' id='L42'>42</a><a href='#L43' id='L43'>43</a><a href='#L44' id='L44'>44</a><a href='#L45' id='L45'>45</a><a href='#L46' id='L46'>46</a><a href='#L47' id='L47'>47</a><a href='#L48' id='L48'>48</a><a href='#L49' id='L49'>49</a><a href='#L50' id='L50'>50</a><a href='#L51' id='L51'>51</a><a href='#L52' id='L52'>52</a><a href='#L53' id='L53'>53</a><a href='#L54' id='L54'>54</a><a href='#L55' id='L55'>55</a><a href='#L56' id='L56'>56</a><a href='#L57' id='L57'>57</a><a href='#L58' id='L58'>58</a><a href='#L59' id='L59'>59</a><a href='#L60' id='L60'>60</a><a href='#L61' id='L61'>61</a><a href='#L62' id='L62'>62</a><a href='#L63' id='L63'>63</a><a href='#L64' id='L64'>64</a><a href='#L65' id='L65'>65</a><a href='#L66' id='L66'>66</a><a href='#L67' id='L67'>67</a><a href='#L68' id='L68'>68</a><a href='#L69' id='L69'>69</a><a href='#L70' id='L70'>70</a><a href='#L71' id='L71'>71</a><a href='#L72' id='L72'>72</a><a href='#L73' id='L73'>73</a><a href='#L74' id='L74'>74</a><a href='#L75' id='L75'>75</a><a href='#L76' id='L76'>76</a><a href='#L77' id='L77'>77</a><a href='#L78' id='L78'>78</a><a href='#L79' id='L79'>79</a><a href='#L80' id='L80'>80</a><a href='#L81' id='L81'>81</a><a href='#L82' id='L82'>82</a><a href='#L83' id='L83'>83</a><a href='#L84' id='L84'>84</a><a href='#L85' id='L85'>85</a><a href='#L86' id='L86'>86</a><a href='#L87' id='L87'>87</a><a href='#L88' id='L88'>88</a><a href='#L89' id='L89'>89</a><a href='#L90' id='L90'>90</a><a href='#L91' id='L91'>91</a><a href='#L92' id='L92'>92</a><a href='#L93' id='L93'>93</a><a href='#L94' id='L94'>94</a><a href='#L95' id='L95'>95</a><a href='#L96' id='L96'>96</a><a href='#L97' id='L97'>97</a><a href='#L98' id='L98'>98</a><a href='#L99' id='L99'>99</a><a href='#L100' id='L100'>100</a><a href='#L101' id='L101'>101</a><a href='#L102' id='L102'>102</a><a href='#L103' id='L103'>103</a><a href='#L104' id='L104'>104</a><a href='#L105' id='L105'>105</a><a href='#L106' id='L106'>106</a><a href='#L107' id='L107'>107</a><a href='#L108' id='L108'>108</a><a href='#L109' id='L109'>109</a><a href='#L110' id='L110'>110</a><a href='#L111' id='L111'>111</a><a href='#L112' id='L112'>112</a><a href='#L113' id='L113'>113</a><a href='#L114' id='L114'>114</a><a href='#L115' id='L115'>115</a><a href='#L116' id='L116'>116</a><a href='#L117' id='L117'>117</a><a href='#L118' id='L118'>118</a><a href='#L119' id='L119'>119</a><a href='#L120' id='L120'>120</a><a href='#L121' id='L121'>121</a><a href='#L122' id='L122'>122</a><a href='#L123' id='L123'>123</a><a href='#L124' id='L124'>124</a><a href='#L125' id='L125'>125</a><a href='#L126' id='L126'>126</a><a href='#L127' id='L127'>127</a><a href='#L128' id='L128'>128</a><a href='#L129' id='L129'>129</a><a href='#L130' id='L130'>130</a><a href='#L131' id='L131'>131</a><a href='#L132' id='L132'>132</a><a href='#L133' id='L133'>133</a><a href='#L134' id='L134'>134</a><a href='#L135' id='L135'>135</a><a href='#L136' id='L136'>136</a><a href='#L137' id='L137'>137</a><a href='#L138' id='L138'>138</a><a href='#L139' id='L139'>139</a><a href='#L140' id='L140'>140</a><a href='#L141' id='L141'>141</a><a href='#L142' id='L142'>142</a><a href='#L143' id='L143'>143</a><a href='#L144' id='L144'>144</a><a href='#L145' id='L145'>145</a><a href='#L146' id='L146'>146</a><a href='#L147' id='L147'>147</a><a href='#L148' id='L148'>148</a><a href='#L149' id='L149'>149</a><a href='#L150' id='L150'>150</a><a href='#L151' id='L151'>151</a><a href='#L152' id='L152'>152</a><a href='#L153' id='L153'>153</a><a href='#L154' id='L154'>154</a><a href='#L155' id='L155'>155</a><a href='#L156' id='L156'>156</a><a href='#L157' id='L157'>157</a><a href='#L158' id='L158'>158</a><a href='#L159' id='L159'>159</a><a href='#L160' id='L160'>160</a><a href='#L161' id='L161'>161</a><a href='#L162' id='L162'>162</a><a href='#L163' id='L163'>163</a><a href='#L164' id='L164'>164</a><a href='#L165' id='L165'>165</a><a href='#L166' id='L166'>166</a><a href='#L167' id='L167'>167</a><a href='#L168' id='L168'>168</a><a href='#L169' id='L169'>169</a><a href='#L170' id='L170'>170</a><a href='#L171' id='L171'>171</a><a href='#L172' id='L172'>172</a><a href='#L173' id='L173'>173</a><a href='#L174' id='L174'>174</a><a href='#L175' id='L175'>175</a><a href='#L176' id='L176'>176</a><a href='#L177' id='L177'>177</a><a href='#L178' id='L178'>178</a><a href='#L179' id='L179'>179</a><a href='#L180' id='L180'>180</a><a href='#L181' id='L181'>181</a><a href='#L182' id='L182'>182</a><a href='#L183' id='L183'>183</a><a href='#L184' id='L184'>184</a><a href='#L185' id='L185'>185</a><a href='#L186' id='L186'>186</a><a href='#L187' id='L187'>187</a><a href='#L188' id='L188'>188</a><a href='#L189' id='L189'>189</a><a href='#L190' id='L190'>190</a><a href='#L191' id='L191'>191</a><a href='#L192' id='L192'>192</a><a href='#L193' id='L193'>193</a><a href='#L194' id='L194'>194</a><a href='#L195' id='L195'>195</a><a href='#L196' id='L196'>196</a><a href='#L197' id='L197'>197</a><a href='#L198' id='L198'>198</a><a href='#L199' id='L199'>199</a><a href='#L200' id='L200'>200</a><a href='#L201' id='L201'>201</a><a href='#L202' id='L202'>202</a><a href='#L203' id='L203'>203</a><a href='#L204' id='L204'>204</a><a href='#L205' id='L205'>205</a><a href='#L206' id='L206'>206</a><a href='#L207' id='L207'>207</a><a href='#L208' id='L208'>208</a><a href='#L209' id='L209'>209</a><a href='#L210' id='L210'>210</a><a href='#L211' id='L211'>211</a><a href='#L212' id='L212'>212</a><a href='#L213' id='L213'>213</a><a href='#L214' id='L214'>214</a><a href='#L215' id='L215'>215</a><a href='#L216' id='L216'>216</a><a href='#L217' id='L217'>217</a><a href='#L218' id='L218'>218</a><a href='#L219' id='L219'>219</a><a href='#L220' id='L220'>220</a><a href='#L221' id='L221'>221</a><a href='#L222' id='L222'>222</a><a href='#L223' id='L223'>223</a><a href='#L224' id='L224'>224</a><a href='#L225' id='L225'>225</a><a href='#L226' id='L226'>226</a><a href='#L227' id='L227'>227</a><a href='#L228' id='L228'>228</a><a href='#L229' id='L229'>229</a><a href='#L230' id='L230'>230</a><a href='#L231' id='L231'>231</a><a href='#L232' id='L232'>232</a><a href='#L233' id='L233'>233</a><a href='#L234' id='L234'>234</a><a href='#L235' id='L235'>235</a><a href='#L236' id='L236'>236</a><a href='#L237' id='L237'>237</a><a href='#L238' id='L238'>238</a><a href='#L239' id='L239'>239</a><a href='#L240' id='L240'>240</a><a href='#L241' id='L241'>241</a><a href='#L242' id='L242'>242</a><a href='#L243' id='L243'>243</a><a href='#L244' id='L244'>244</a><a href='#L245' id='L245'>245</a><a href='#L246' id='L246'>246</a><a href='#L247' id='L247'>247</a><a href='#L248' id='L248'>248</a><a href='#L249' id='L249'>249</a><a href='#L250' id='L250'>250</a><a href='#L251' id='L251'>251</a><a href='#L252' id='L252'>252</a><a href='#L253' id='L253'>253</a><a href='#L254' id='L254'>254</a><a href='#L255' id='L255'>255</a><a href='#L256' id='L256'>256</a><a href='#L257' id='L257'>257</a><a href='#L258' id='L258'>258</a><a href='#L259' id='L259'>259</a><a href='#L260' id='L260'>260</a><a href='#L261' id='L261'>261</a><a href='#L262' id='L262'>262</a><a href='#L263' id='L263'>263</a><a href='#L264' id='L264'>264</a><a href='#L265' id='L265'>265</a><a href='#L266' id='L266'>266</a><a href='#L267' id='L267'>267</a><a href='#L268' id='L268'>268</a><a href='#L269' id='L269'>269</a><a href='#L270' id='L270'>270</a><a href='#L271' id='L271'>271</a><a href='#L272' id='L272'>272</a><a href='#L273' id='L273'>273</a><a href='#L274' id='L274'>274</a><a href='#L275' id='L275'>275</a><a href='#L276' id='L276'>276</a><a href='#L277' id='L277'>277</a><a href='#L278' id='L278'>278</a><a href='#L279' id='L279'>279</a><a href='#L280' id='L280'>280</a><a href='#L281' id='L281'>281</a><a href='#L282' id='L282'>282</a><a href='#L283' id='L283'>283</a><a href='#L284' id='L284'>284</a><a href='#L285' id='L285'>285</a><a href='#L286' id='L286'>286</a><a href='#L287' id='L287'>287</a><a href='#L288' id='L288'>288</a><a href='#L289' id='L289'>289</a><a href='#L290' id='L290'>290</a><a href='#L291' id='L291'>291</a><a href='#L292' id='L292'>292</a><a href='#L293' id='L293'>293</a><a href='#L294' id='L294'>294</a><a href='#L295' id='L295'>295</a><a href='#L296' id='L296'>296</a><a href='#L297' id='L297'>297</a><a href='#L298' id='L298'>298</a><a href='#L299' id='L299'>299</a><a href='#L300' id='L300'>300</a><a href='#L301' id='L301'>301</a><a href='#L302' id='L302'>302</a><a href='#L303' id='L303'>303</a><a href='#L304' id='L304'>304</a><a href='#L305' id='L305'>305</a><a href='#L306' id='L306'>306</a><a href='#L307' id='L307'>307</a><a href='#L308' id='L308'>308</a><a href='#L309' id='L309'>309</a><a href='#L310' id='L310'>310</a><a href='#L311' id='L311'>311</a><a href='#L312' id='L312'>312</a><a href='#L313' id='L313'>313</a><a href='#L314' id='L314'>314</a><a href='#L315' id='L315'>315</a><a href='#L316' id='L316'>316</a><a href='#L317' id='L317'>317</a><a href='#L318' id='L318'>318</a><a href='#L319' id='L319'>319</a><a href='#L320' id='L320'>320</a><a href='#L321' id='L321'>321</a><a href='#L322' id='L322'>322</a><a href='#L323' id='L323'>323</a><a href='#L324' id='L324'>324</a><a href='#L325' id='L325'>325</a><a href='#L326' id='L326'>326</a><a href='#L327' id='L327'>327</a><a href='#L328' id='L328'>328</a><a href='#L329' id='L329'>329</a><a href='#L330' id='L330'>330</a><a href='#L331' id='L331'>331</a><a href='#L332' id='L332'>332</a><a href='#L333' id='L333'>333</a><a href='#L334' id='L334'>334</a><a href='#L335' id='L335'>335</a><a href='#L336' id='L336'>336</a><a href='#L337' id='L337'>337</a><a href='#L338' id='L338'>338</a><a href='#L339' id='L339'>339</a><a href='#L340' id='L340'>340</a><a href='#L341' id='L341'>341</a><a href='#L342' id='L342'>342</a><a href='#L343' id='L343'>343</a><a href='#L344' id='L344'>344</a><a href='#L345' id='L345'>345</a><a href='#L346' id='L346'>346</a><a href='#L347' id='L347'>347</a><a href='#L348' id='L348'>348</a><a href='#L349' id='L349'>349</a><a href='#L350' id='L350'>350</a><a href='#L351' id='L351'>351</a><a href='#L352' id='L352'>352</a><a href='#L353' id='L353'>353</a><a href='#L354' id='L354'>354</a><a href='#L355' id='L355'>355</a><a href='#L356' id='L356'>356</a><a href='#L357' id='L357'>357</a><a href='#L358' id='L358'>358</a><a href='#L359' id='L359'>359</a><a href='#L360' id='L360'>360</a><a href='#L361' id='L361'>361</a><a href='#L362' id='L362'>362</a><a href='#L363' id='L363'>363</a><a href='#L364' id='L364'>364</a><a href='#L365' id='L365'>365</a><a href='#L366' id='L366'>366</a><a href='#L367' id='L367'>367</a><a href='#L368' id='L368'>368</a><a href='#L369' id='L369'>369</a><a href='#L370' id='L370'>370</a><a href='#L371' id='L371'>371</a><a href='#L372' id='L372'>372</a><a href='#L373' id='L373'>373</a><a href='#L374' id='L374'>374</a><a href='#L375' id='L375'>375</a><a href='#L376' id='L376'>376</a><a href='#L377' id='L377'>377</a><a href='#L378' id='L378'>378</a><a href='#L379' id='L379'>379</a><a href='#L380' id='L380'>380</a><a href='#L381' id='L381'>381</a><a href='#L382' id='L382'>382</a><a href='#L383' id='L383'>383</a><a href='#L384' id='L384'>384</a><a href='#L385' id='L385'>385</a><a href='#L386' id='L386'>386</a><a href='#L387' id='L387'>387</a><a href='#L388' id='L388'>388</a><a href='#L389' id='L389'>389</a><a href='#L390' id='L390'>390</a><a href='#L391' id='L391'>391</a><a href='#L392' id='L392'>392</a><a href='#L393' id='L393'>393</a><a href='#L394' id='L394'>394</a><a href='#L395' id='L395'>395</a><a href='#L396' id='L396'>396</a><a href='#L397' id='L397'>397</a><a href='#L398' id='L398'>398</a><a href='#L399' id='L399'>399</a><a href='#L400' id='L400'>400</a><a href='#L401' id='L401'>401</a><a href='#L402' id='L402'>402</a><a href='#L403' id='L403'>403</a><a href='#L404' id='L404'>404</a><a href='#L405' id='L405'>405</a><a href='#L406' id='L406'>406</a><a href='#L407' id='L407'>407</a><a href='#L408' id='L408'>408</a><a href='#L409' id='L409'>409</a><a href='#L410' id='L410'>410</a><a href='#L411' id='L411'>411</a><a href='#L412' id='L412'>412</a><a href='#L413' id='L413'>413</a><a href='#L414' id='L414'>414</a><a href='#L415' id='L415'>415</a><a href='#L416' id='L416'>416</a><a href='#L417' id='L417'>417</a><a href='#L418' id='L418'>418</a><a href='#L419' id='L419'>419</a><a href='#L420' id='L420'>420</a><a href='#L421' id='L421'>421</a><a href='#L422' id='L422'>422</a><a href='#L423' id='L423'>423</a><a href='#L424' id='L424'>424</a><a href='#L425' id='L425'>425</a><a href='#L426' id='L426'>426</a><a href='#L427' id='L427'>427</a><a href='#L428' id='L428'>428</a><a href='#L429' id='L429'>429</a><a href='#L430' id='L430'>430</a><a href='#L431' id='L431'>431</a><a href='#L432' id='L432'>432</a><a href='#L433' id='L433'>433</a><a href='#L434' id='L434'>434</a><a href='#L435' id='L435'>435</a><a href='#L436' id='L436'>436</a><a href='#L437' id='L437'>437</a><a href='#L438' id='L438'>438</a><a href='#L439' id='L439'>439</a><a href='#L440' id='L440'>440</a><a href='#L441' id='L441'>441</a><a href='#L442' id='L442'>442</a><a href='#L443' id='L443'>443</a><a href='#L444' id='L444'>444</a><a href='#L445' id='L445'>445</a><a href='#L446' id='L446'>446</a><a href='#L447' id='L447'>447</a><a href='#L448' id='L448'>448</a><a href='#L449' id='L449'>449</a><a href='#L450' id='L450'>450</a><a href='#L451' id='L451'>451</a><a href='#L452' id='L452'>452</a><a href='#L453' id='L453'>453</a><a href='#L454' id='L454'>454</a><a href='#L455' id='L455'>455</a><a href='#L456' id='L456'>456</a><a href='#L457' id='L457'>457</a><a href='#L458' id='L458'>458</a><a href='#L459' id='L459'>459</a><a href='#L460' id='L460'>460</a><a href='#L461' id='L461'>461</a><a href='#L462' id='L462'>462</a><a href='#L463' id='L463'>463</a><a href='#L464' id='L464'>464</a><a href='#L465' id='L465'>465</a><a href='#L466' id='L466'>466</a><a href='#L467' id='L467'>467</a><a href='#L468' id='L468'>468</a><a href='#L469' id='L469'>469</a><a href='#L470' id='L470'>470</a><a href='#L471' id='L471'>471</a><a href='#L472' id='L472'>472</a><a href='#L473' id='L473'>473</a><a href='#L474' id='L474'>474</a><a href='#L475' id='L475'>475</a><a href='#L476' id='L476'>476</a><a href='#L477' id='L477'>477</a><a href='#L478' id='L478'>478</a><a href='#L479' id='L479'>479</a><a href='#L480' id='L480'>480</a><a href='#L481' id='L481'>481</a><a href='#L482' id='L482'>482</a><a href='#L483' id='L483'>483</a><a href='#L484' id='L484'>484</a><a href='#L485' id='L485'>485</a><a href='#L486' id='L486'>486</a><a href='#L487' id='L487'>487</a><a href='#L488' id='L488'>488</a><a href='#L489' id='L489'>489</a><a href='#L490' id='L490'>490</a><a href='#L491' id='L491'>491</a><a href='#L492' id='L492'>492</a><a href='#L493' id='L493'>493</a><a href='#L494' id='L494'>494</a><a href='#L495' id='L495'>495</a><a href='#L496' id='L496'>496</a><a href='#L497' id='L497'>497</a><a href='#L498' id='L498'>498</a><a href='#L499' id='L499'>499</a><a href='#L500' id='L500'>500</a><a href='#L501' id='L501'>501</a><a href='#L502' id='L502'>502</a><a href='#L503' id='L503'>503</a><a href='#L504' id='L504'>504</a></div><div class="highlight markdown-code-block"><pre class=""><div class='line' id='LC1'><span class="cp">&lt;!DOCTYPE html&gt;</span>&#x000A;</div><div class='line' id='LC2'><span class="c">&lt;!-- saved from url=(0051)https://httishere.gitee.io/notion/v4/love-name.html --&gt;</span>&#x000A;</div><div class='line' id='LC3'><span class="nt">&lt;html&gt;&lt;head&gt;&lt;meta</span> <span class="na">http-equiv=</span><span class="s">"Content-Type"</span> <span class="na">content=</span><span class="s">"text/html; charset=UTF-8"</span><span class="nt">&gt;</span>&#x000A;</div><div class='line' id='LC4'>    &#x000A;</div><div class='line' id='LC5'>    <span class="nt">&lt;title&gt;</span>💗 Love you 💗<span class="nt">&lt;/title&gt;</span>&#x000A;</div><div class='line' id='LC6'>    <span class="nt">&lt;style </span><span class="na">type=</span><span class="s">"text/css"</span><span class="nt">&gt;</span>&#x000A;</div><div class='line' id='LC7'>      <span class="nt">body</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC8'>        <span class="nl">margin</span><span class="p">:</span> <span class="m">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC9'>        <span class="nl">overflow</span><span class="p">:</span> <span class="nb">hidden</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC10'>        <span class="nl">background</span><span class="p">:</span> <span class="m">#000</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC11'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC12'>      <span class="nt">canvas</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC13'>        <span class="nl">position</span><span class="p">:</span> <span class="nb">absolute</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC14'>        <span class="nl">width</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC15'>        <span class="nl">height</span><span class="p">:</span> <span class="m">100%</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC16'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC17'>      <span class="nf">#pinkboard</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC18'>        <span class="nl">animation</span><span class="p">:</span> <span class="n">anim</span> <span class="m">1.5s</span> <span class="n">ease-in-out</span> <span class="n">infinite</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC19'>        <span class="nl">-webkit-animation</span><span class="p">:</span> <span class="n">anim</span> <span class="m">1.5s</span> <span class="n">ease-in-out</span> <span class="n">infinite</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC20'>        <span class="nl">-o-animation</span><span class="p">:</span> <span class="n">anim</span> <span class="m">1.5s</span> <span class="n">ease-in-out</span> <span class="n">infinite</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC21'>        <span class="nl">-moz-animation</span><span class="p">:</span> <span class="n">anim</span> <span class="m">1.5s</span> <span class="n">ease-in-out</span> <span class="n">infinite</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC22'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC23'>      <span class="k">@keyframes</span> <span class="n">anim</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC24'>        <span class="err">0</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC25'>          <span class="nl">transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC26'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC27'>        <span class="err">25</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC28'>          <span class="nl">transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC29'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC30'>        <span class="err">50</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC31'>          <span class="nl">transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC32'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC33'>        <span class="err">75</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC34'>          <span class="nl">transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC35'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC36'>        <span class="err">100</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC37'>          <span class="nl">transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC38'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC39'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC40'>      <span class="k">@-webkit-keyframes</span> <span class="n">anim</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC41'>        <span class="err">0</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC42'>          <span class="nl">-webkit-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC43'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC44'>        <span class="err">25</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC45'>          <span class="nl">-webkit-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC46'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC47'>        <span class="err">50</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC48'>          <span class="nl">-webkit-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC49'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC50'>        <span class="err">75</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC51'>          <span class="nl">-webkit-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC52'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC53'>        <span class="err">100</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC54'>          <span class="nl">-webkit-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC55'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC56'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC57'>      <span class="k">@-o-keyframes</span> <span class="n">anim</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC58'>        <span class="err">0</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC59'>          <span class="nl">-o-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC60'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC61'>        <span class="err">25</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC62'>          <span class="nl">-o-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC63'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC64'>        <span class="err">50</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC65'>          <span class="nl">-o-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC66'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC67'>        <span class="err">75</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC68'>          <span class="nl">-o-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC69'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC70'>        <span class="err">100</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC71'>          <span class="nl">-o-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC72'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC73'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC74'>      <span class="k">@-moz-keyframes</span> <span class="n">anim</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC75'>        <span class="err">0</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC76'>          <span class="nl">-moz-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC77'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC78'>        <span class="err">25</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC79'>          <span class="nl">-moz-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC80'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC81'>        <span class="err">50</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC82'>          <span class="nl">-moz-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC83'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC84'>        <span class="err">75</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC85'>          <span class="nl">-moz-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.7</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC86'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC87'>        <span class="err">100</span><span class="o">%</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC88'>          <span class="nl">-moz-transform</span><span class="p">:</span> <span class="n">scale</span><span class="p">(</span><span class="m">0.8</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC89'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC90'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC91'>      <span class="nf">#name</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC92'>        <span class="nl">position</span><span class="p">:</span> <span class="nb">absolute</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC93'>        <span class="nl">top</span><span class="p">:</span> <span class="m">50%</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC94'>        <span class="nl">left</span><span class="p">:</span> <span class="m">50%</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC95'>        <span class="nl">transform</span><span class="p">:</span> <span class="n">translate</span><span class="p">(</span><span class="m">-50%</span><span class="p">,</span> <span class="m">-50%</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC96'>        <span class="nl">margin-top</span><span class="p">:</span> <span class="m">-20px</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC97'>        <span class="nl">font-size</span><span class="p">:</span> <span class="m">46px</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC98'>        <span class="nl">color</span><span class="p">:</span> <span class="m">#ea80b0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC99'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC100'>    <span class="nt">&lt;/style&gt;</span>&#x000A;</div><div class='line' id='LC101'>  <span class="nt">&lt;/head&gt;</span>&#x000A;</div><div class='line' id='LC102'>  <span class="nt">&lt;body&gt;</span>&#x000A;</div><div class='line' id='LC103'>    <span class="nt">&lt;canvas</span> <span class="na">id=</span><span class="s">"pinkboard"</span> <span class="na">width=</span><span class="s">"1536"</span> <span class="na">height=</span><span class="s">"722"</span><span class="nt">&gt;&lt;/canvas&gt;</span>&#x000A;</div><div class='line' id='LC104'>    <span class="c">&lt;!-- &lt;div id="name"&gt;周远美 ❤️&lt;/div&gt; --&gt;</span>&#x000A;</div><div class='line' id='LC105'>    <span class="nt">&lt;canvas</span> <span class="na">id=</span><span class="s">"canvas"</span> <span class="na">width=</span><span class="s">"1536"</span> <span class="na">height=</span><span class="s">"676"</span><span class="nt">&gt;&lt;/canvas&gt;</span>&#x000A;</div><div class='line' id='LC106'>&#x000A;</div><div class='line' id='LC107'>    <span class="nt">&lt;script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">&gt;</span>&#x000A;</div><div class='line' id='LC108'>      <span class="kd">const</span> <span class="nx">colors</span> <span class="o">=</span> <span class="p">[</span>&#x000A;</div><div class='line' id='LC109'>        <span class="dl">"</span><span class="s2">#eec996</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC110'>        <span class="dl">"</span><span class="s2">#8fb7d3</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC111'>        <span class="dl">"</span><span class="s2">#b7d4c6</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC112'>        <span class="dl">"</span><span class="s2">#c3bedd</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC113'>        <span class="dl">"</span><span class="s2">#f1d5e4</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC114'>        <span class="dl">"</span><span class="s2">#cae1d3</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC115'>        <span class="dl">"</span><span class="s2">#f3c89d</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC116'>        <span class="dl">"</span><span class="s2">#d0b0c3</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC117'>        <span class="dl">"</span><span class="s2">#819d53</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC118'>        <span class="dl">"</span><span class="s2">#c99294</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC119'>        <span class="dl">"</span><span class="s2">#cec884</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC120'>        <span class="dl">"</span><span class="s2">#ff8e70</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC121'>        <span class="dl">"</span><span class="s2">#e0a111</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC122'>        <span class="dl">"</span><span class="s2">#fffdf6</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC123'>        <span class="dl">"</span><span class="s2">#cbd7ac</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC124'>        <span class="dl">"</span><span class="s2">#e8c6c0</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC125'>        <span class="dl">"</span><span class="s2">#dc9898</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC126'>        <span class="dl">"</span><span class="s2">#ecc8ba</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC127'>      <span class="p">];</span> <span class="c1">//用来设置的颜色</span>&#x000A;</div><div class='line' id='LC128'>      <span class="kd">var</span> <span class="nx">canvas</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">canvas</span><span class="dl">"</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC129'>      <span class="kd">var</span> <span class="nx">ctx</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">getContext</span><span class="p">(</span><span class="dl">"</span><span class="s2">2d</span><span class="dl">"</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC130'>      <span class="kd">let</span> <span class="nx">count</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC131'>&#x000A;</div><div class='line' id='LC132'>      <span class="kd">var</span> <span class="nx">ww</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerWidth</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC133'>      <span class="kd">var</span> <span class="nx">wh</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerHeight</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC134'>&#x000A;</div><div class='line' id='LC135'>      <span class="kd">var</span> <span class="nx">hearts</span> <span class="o">=</span> <span class="p">[];</span>&#x000A;</div><div class='line' id='LC136'>&#x000A;</div><div class='line' id='LC137'>      <span class="kd">function</span> <span class="nx">init</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC138'>        <span class="nx">requestAnimationFrame</span><span class="p">(</span><span class="nx">render</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC139'>        <span class="nx">canvas</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="nx">ww</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC140'>        <span class="nx">canvas</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">wh</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC141'>        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC142'>          <span class="nx">hearts</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="k">new</span> <span class="nx">Heart</span><span class="p">());</span>&#x000A;</div><div class='line' id='LC143'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC144'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC145'>&#x000A;</div><div class='line' id='LC146'>      <span class="kd">function</span> <span class="nx">Heart</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC147'>        <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="nx">ww</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC148'>        <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="nx">wh</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC149'>        <span class="k">this</span><span class="p">.</span><span class="nx">opacity</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="mf">0.5</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC150'>        <span class="k">this</span><span class="p">.</span><span class="nx">vel</span> <span class="o">=</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC151'>          <span class="na">x</span><span class="p">:</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC152'>          <span class="na">y</span><span class="p">:</span> <span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">-</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">*</span> <span class="mi">4</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC153'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC154'>        <span class="k">this</span><span class="p">.</span><span class="nx">targetScale</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="mf">0.15</span> <span class="o">+</span> <span class="mf">0.02</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC155'>        <span class="k">this</span><span class="p">.</span><span class="nx">scale</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">targetScale</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC156'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC157'>&#x000A;</div><div class='line' id='LC158'>      <span class="nx">Heart</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">update</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC159'>        <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">vel</span><span class="p">.</span><span class="nx">x</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC160'>        <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">vel</span><span class="p">.</span><span class="nx">y</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC161'>&#x000A;</div><div class='line' id='LC162'>        <span class="k">this</span><span class="p">.</span><span class="nx">scale</span> <span class="o">+=</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">targetScale</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.01</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC163'>        <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">width</span> <span class="o">&gt;</span> <span class="nx">ww</span> <span class="o">||</span> <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">width</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC164'>          <span class="k">this</span><span class="p">.</span><span class="nx">scale</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC165'>          <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="nx">ww</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC166'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC167'>        <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">height</span> <span class="o">&gt;</span> <span class="nx">wh</span> <span class="o">||</span> <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">height</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC168'>          <span class="k">this</span><span class="p">.</span><span class="nx">scale</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC169'>          <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span> <span class="o">*</span> <span class="nx">wh</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC170'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC171'>        <span class="k">this</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="mf">473.8</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC172'>        <span class="k">this</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="mf">408.6</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC173'>      <span class="p">};</span>&#x000A;</div><div class='line' id='LC174'>      <span class="nx">Heart</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">draw</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">i</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC175'>        <span class="nx">ctx</span><span class="p">.</span><span class="nx">globalAlpha</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">opacity</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC176'>        <span class="nx">ctx</span><span class="p">.</span><span class="nx">font</span> <span class="o">=</span> <span class="s2">`</span><span class="p">${</span><span class="mi">180</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">scale</span><span class="p">}</span><span class="s2">px "微软雅黑"`</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC177'>        <span class="c1">// ctx.font="20px";</span>&#x000A;</div><div class='line' id='LC178'>        <span class="nx">ctx</span><span class="p">.</span><span class="nx">fillStyle</span> <span class="o">=</span> <span class="nx">colors</span><span class="p">[</span><span class="nx">i</span> <span class="o">%</span> <span class="mi">18</span><span class="p">];</span>&#x000A;</div><div class='line' id='LC179'>        <span class="nx">ctx</span><span class="p">.</span><span class="nx">fillText</span><span class="p">(</span>&#x000A;</div><div class='line' id='LC180'>          <span class="dl">"</span><span class="s2">周远美</span><span class="dl">"</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC181'>          <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="mf">0.5</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC182'>          <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">height</span> <span class="o">*</span> <span class="mf">0.5</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC183'>          <span class="k">this</span><span class="p">.</span><span class="nx">width</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC184'>          <span class="k">this</span><span class="p">.</span><span class="nx">height</span>&#x000A;</div><div class='line' id='LC185'>        <span class="p">);</span>&#x000A;</div><div class='line' id='LC186'>        <span class="c1">// ctx.drawImage(</span>&#x000A;</div><div class='line' id='LC187'>        <span class="c1">//   heartImage,</span>&#x000A;</div><div class='line' id='LC188'>        <span class="c1">//   this.x - this.width * 0.5,</span>&#x000A;</div><div class='line' id='LC189'>        <span class="c1">//   this.y - this.height * 0.5,</span>&#x000A;</div><div class='line' id='LC190'>        <span class="c1">//   this.width,</span>&#x000A;</div><div class='line' id='LC191'>        <span class="c1">//   this.height</span>&#x000A;</div><div class='line' id='LC192'>        <span class="c1">// );</span>&#x000A;</div><div class='line' id='LC193'>      <span class="p">};</span>&#x000A;</div><div class='line' id='LC194'>&#x000A;</div><div class='line' id='LC195'>      <span class="kd">function</span> <span class="nx">render</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC196'>        <span class="nx">ctx</span><span class="p">.</span><span class="nx">clearRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">ww</span><span class="p">,</span> <span class="nx">wh</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC197'>        <span class="c1">// ctx.globalAlpha = 1;</span>&#x000A;</div><div class='line' id='LC198'>        <span class="c1">// ctx.fillStyle = "rgba(255,255,255,0.3)";</span>&#x000A;</div><div class='line' id='LC199'>        <span class="c1">// ctx.fillRect(0, 0, ww, wh);</span>&#x000A;</div><div class='line' id='LC200'>        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="mi">100</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC201'>          <span class="nx">hearts</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">update</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC202'>          <span class="nx">hearts</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">draw</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC203'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC204'>        <span class="nx">requestAnimationFrame</span><span class="p">(</span><span class="nx">render</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC205'>      <span class="p">}</span>&#x000A;</div><div class='line' id='LC206'>      <span class="nx">init</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC207'>&#x000A;</div><div class='line' id='LC208'>      <span class="c1">// var heartImage = new Image();</span>&#x000A;</div><div class='line' id='LC209'>      <span class="c1">// heartImage.onload = init();</span>&#x000A;</div><div class='line' id='LC210'>      <span class="c1">// heartImage.src =</span>&#x000A;</div><div class='line' id='LC211'>      <span class="c1">//   "";</span>&#x000A;</div><div class='line' id='LC212'>&#x000A;</div><div class='line' id='LC213'>      <span class="nb">window</span><span class="p">.</span><span class="nx">addEventListener</span><span class="p">(</span><span class="dl">"</span><span class="s2">resize</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC214'>        <span class="nx">ww</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerWidth</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC215'>        <span class="nx">wh</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">innerHeight</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC216'>      <span class="p">});</span>&#x000A;</div><div class='line' id='LC217'>    <span class="nt">&lt;/script&gt;</span>&#x000A;</div><div class='line' id='LC218'>    <span class="nt">&lt;script&gt;</span>&#x000A;</div><div class='line' id='LC219'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC220'><span class="cm">       * Settings</span>&#x000A;</div><div class='line' id='LC221'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC222'>      <span class="kd">var</span> <span class="nx">settings</span> <span class="o">=</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC223'>        <span class="na">particles</span><span class="p">:</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC224'>          <span class="na">length</span><span class="p">:</span> <span class="mi">500</span><span class="p">,</span> <span class="c1">// maximum amount of particles</span>&#x000A;</div><div class='line' id='LC225'>          <span class="na">duration</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> <span class="c1">// particle duration in sec</span>&#x000A;</div><div class='line' id='LC226'>          <span class="na">velocity</span><span class="p">:</span> <span class="mi">100</span><span class="p">,</span> <span class="c1">// particle velocity in pixels/sec</span>&#x000A;</div><div class='line' id='LC227'>          <span class="na">effect</span><span class="p">:</span> <span class="o">-</span><span class="mf">0.75</span><span class="p">,</span> <span class="c1">// play with this for a nice effect</span>&#x000A;</div><div class='line' id='LC228'>          <span class="na">size</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span> <span class="c1">// particle size in pixels</span>&#x000A;</div><div class='line' id='LC229'>        <span class="p">},</span>&#x000A;</div><div class='line' id='LC230'>      <span class="p">};</span>&#x000A;</div><div class='line' id='LC231'>&#x000A;</div><div class='line' id='LC232'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC233'><span class="cm">       * RequestAnimationFrame polyfill by Erik M?ller</span>&#x000A;</div><div class='line' id='LC234'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC235'>      <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC236'>        <span class="kd">var</span> <span class="nx">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC237'>        <span class="kd">var</span> <span class="nx">c</span> <span class="o">=</span> <span class="p">[</span><span class="dl">"</span><span class="s2">ms</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">moz</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">webkit</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">o</span><span class="dl">"</span><span class="p">];</span>&#x000A;</div><div class='line' id='LC238'>        <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">a</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">a</span> <span class="o">&lt;</span> <span class="nx">c</span><span class="p">.</span><span class="nx">length</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nb">window</span><span class="p">.</span><span class="nx">requestAnimationFrame</span><span class="p">;</span> <span class="o">++</span><span class="nx">a</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC239'>          <span class="nb">window</span><span class="p">.</span><span class="nx">requestAnimationFrame</span> <span class="o">=</span> <span class="nb">window</span><span class="p">[</span><span class="nx">c</span><span class="p">[</span><span class="nx">a</span><span class="p">]</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">RequestAnimationFrame</span><span class="dl">"</span><span class="p">];</span>&#x000A;</div><div class='line' id='LC240'>          <span class="nb">window</span><span class="p">.</span><span class="nx">cancelAnimationFrame</span> <span class="o">=</span>&#x000A;</div><div class='line' id='LC241'>            <span class="nb">window</span><span class="p">[</span><span class="nx">c</span><span class="p">[</span><span class="nx">a</span><span class="p">]</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">CancelAnimationFrame</span><span class="dl">"</span><span class="p">]</span> <span class="o">||</span>&#x000A;</div><div class='line' id='LC242'>            <span class="nb">window</span><span class="p">[</span><span class="nx">c</span><span class="p">[</span><span class="nx">a</span><span class="p">]</span> <span class="o">+</span> <span class="dl">"</span><span class="s2">CancelRequestAnimationFrame</span><span class="dl">"</span><span class="p">];</span>&#x000A;</div><div class='line' id='LC243'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC244'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">window</span><span class="p">.</span><span class="nx">requestAnimationFrame</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC245'>          <span class="nb">window</span><span class="p">.</span><span class="nx">requestAnimationFrame</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">h</span><span class="p">,</span> <span class="nx">e</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC246'>            <span class="kd">var</span> <span class="nx">d</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC247'>            <span class="kd">var</span> <span class="nx">f</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">16</span> <span class="o">-</span> <span class="p">(</span><span class="nx">d</span> <span class="o">-</span> <span class="nx">b</span><span class="p">));</span>&#x000A;</div><div class='line' id='LC248'>            <span class="kd">var</span> <span class="nx">g</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC249'>              <span class="nx">h</span><span class="p">(</span><span class="nx">d</span> <span class="o">+</span> <span class="nx">f</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC250'>            <span class="p">},</span> <span class="nx">f</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC251'>            <span class="nx">b</span> <span class="o">=</span> <span class="nx">d</span> <span class="o">+</span> <span class="nx">f</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC252'>            <span class="k">return</span> <span class="nx">g</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC253'>          <span class="p">};</span>&#x000A;</div><div class='line' id='LC254'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC255'>        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">window</span><span class="p">.</span><span class="nx">cancelAnimationFrame</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC256'>          <span class="nb">window</span><span class="p">.</span><span class="nx">cancelAnimationFrame</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC257'>            <span class="nx">clearTimeout</span><span class="p">(</span><span class="nx">d</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC258'>          <span class="p">};</span>&#x000A;</div><div class='line' id='LC259'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC260'>      <span class="p">})();</span>&#x000A;</div><div class='line' id='LC261'>&#x000A;</div><div class='line' id='LC262'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC263'><span class="cm">       * Point class</span>&#x000A;</div><div class='line' id='LC264'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC265'>      <span class="kd">var</span> <span class="nx">Point</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC266'>        <span class="kd">function</span> <span class="nx">Point</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC267'>          <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">x</span> <span class="o">!==</span> <span class="dl">"</span><span class="s2">undefined</span><span class="dl">"</span> <span class="p">?</span> <span class="nx">x</span> <span class="p">:</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC268'>          <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="k">typeof</span> <span class="nx">y</span> <span class="o">!==</span> <span class="dl">"</span><span class="s2">undefined</span><span class="dl">"</span> <span class="p">?</span> <span class="nx">y</span> <span class="p">:</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC269'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC270'>        <span class="nx">Point</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">clone</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC271'>          <span class="k">return</span> <span class="k">new</span> <span class="nx">Point</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC272'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC273'>        <span class="nx">Point</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">length</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC274'>          <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">length</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">undefined</span><span class="dl">"</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC275'>            <span class="k">return</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">+</span> <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">*</span> <span class="k">this</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC276'>          <span class="k">this</span><span class="p">.</span><span class="nx">normalize</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC277'>          <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">*=</span> <span class="nx">length</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC278'>          <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">*=</span> <span class="nx">length</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC279'>          <span class="k">return</span> <span class="k">this</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC280'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC281'>        <span class="nx">Point</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">normalize</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC282'>          <span class="kd">var</span> <span class="nx">length</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">length</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC283'>          <span class="k">this</span><span class="p">.</span><span class="nx">x</span> <span class="o">/=</span> <span class="nx">length</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC284'>          <span class="k">this</span><span class="p">.</span><span class="nx">y</span> <span class="o">/=</span> <span class="nx">length</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC285'>          <span class="k">return</span> <span class="k">this</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC286'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC287'>        <span class="k">return</span> <span class="nx">Point</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC288'>      <span class="p">})();</span>&#x000A;</div><div class='line' id='LC289'>&#x000A;</div><div class='line' id='LC290'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC291'><span class="cm">       * Particle class</span>&#x000A;</div><div class='line' id='LC292'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC293'>&#x000A;</div><div class='line' id='LC294'>      <span class="kd">var</span> <span class="nx">Particle</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC295'>        <span class="kd">function</span> <span class="nx">Particle</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC296'>          <span class="k">this</span><span class="p">.</span><span class="nx">position</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Point</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC297'>          <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Point</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC298'>          <span class="k">this</span><span class="p">.</span><span class="nx">acceleration</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Point</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC299'>          <span class="k">this</span><span class="p">.</span><span class="nx">age</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC300'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC301'>        <span class="nx">Particle</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">initialize</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">,</span> <span class="nx">dx</span><span class="p">,</span> <span class="nx">dy</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC302'>          <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">x</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC303'>          <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">y</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC304'>          <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">dx</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC305'>          <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">dy</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC306'>          <span class="k">this</span><span class="p">.</span><span class="nx">acceleration</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span> <span class="nx">dx</span> <span class="o">*</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">effect</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC307'>          <span class="k">this</span><span class="p">.</span><span class="nx">acceleration</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span> <span class="nx">dy</span> <span class="o">*</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">effect</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC308'>          <span class="k">this</span><span class="p">.</span><span class="nx">age</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC309'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC310'>        <span class="nx">Particle</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">update</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">deltaTime</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC311'>          <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">x</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">x</span> <span class="o">*</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC312'>          <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">y</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">y</span> <span class="o">*</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC313'>          <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">x</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">acceleration</span><span class="p">.</span><span class="nx">x</span> <span class="o">*</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC314'>          <span class="k">this</span><span class="p">.</span><span class="nx">velocity</span><span class="p">.</span><span class="nx">y</span> <span class="o">+=</span> <span class="k">this</span><span class="p">.</span><span class="nx">acceleration</span><span class="p">.</span><span class="nx">y</span> <span class="o">*</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC315'>          <span class="k">this</span><span class="p">.</span><span class="nx">age</span> <span class="o">+=</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC316'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC317'>        <span class="nx">Particle</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">draw</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC318'>          <span class="kd">function</span> <span class="nx">ease</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC319'>            <span class="k">return</span> <span class="o">--</span><span class="nx">t</span> <span class="o">*</span> <span class="nx">t</span> <span class="o">*</span> <span class="nx">t</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC320'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC321'>          <span class="kd">var</span> <span class="nx">size</span> <span class="o">=</span> <span class="nx">image</span><span class="p">.</span><span class="nx">width</span> <span class="o">*</span> <span class="nx">ease</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">age</span> <span class="o">/</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">duration</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC322'>          <span class="nx">context</span><span class="p">.</span><span class="nx">globalAlpha</span> <span class="o">=</span> <span class="mi">1</span> <span class="o">-</span> <span class="k">this</span><span class="p">.</span><span class="nx">age</span> <span class="o">/</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">duration</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC323'>          <span class="nx">context</span><span class="p">.</span><span class="nx">drawImage</span><span class="p">(</span>&#x000A;</div><div class='line' id='LC324'>            <span class="nx">image</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC325'>            <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">x</span> <span class="o">-</span> <span class="nx">size</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC326'>            <span class="k">this</span><span class="p">.</span><span class="nx">position</span><span class="p">.</span><span class="nx">y</span> <span class="o">-</span> <span class="nx">size</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC327'>            <span class="nx">size</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC328'>            <span class="nx">size</span>&#x000A;</div><div class='line' id='LC329'>          <span class="p">);</span>&#x000A;</div><div class='line' id='LC330'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC331'>        <span class="k">return</span> <span class="nx">Particle</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC332'>      <span class="p">})();</span>&#x000A;</div><div class='line' id='LC333'>&#x000A;</div><div class='line' id='LC334'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC335'><span class="cm">       * ParticlePool class</span>&#x000A;</div><div class='line' id='LC336'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC337'>      <span class="kd">var</span> <span class="nx">ParticlePool</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC338'>        <span class="kd">var</span> <span class="nx">particles</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC339'>          <span class="nx">firstActive</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC340'>          <span class="nx">firstFree</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC341'>          <span class="nx">duration</span> <span class="o">=</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">duration</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC342'>&#x000A;</div><div class='line' id='LC343'>        <span class="kd">function</span> <span class="nx">ParticlePool</span><span class="p">(</span><span class="nx">length</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC344'>          <span class="c1">// create and populate particle pool</span>&#x000A;</div><div class='line' id='LC345'>          <span class="nx">particles</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Array</span><span class="p">(</span><span class="nx">length</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC346'>          <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC347'>            <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Particle</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC348'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC349'>        <span class="nx">ParticlePool</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">add</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">,</span> <span class="nx">dx</span><span class="p">,</span> <span class="nx">dy</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC350'>          <span class="nx">particles</span><span class="p">[</span><span class="nx">firstFree</span><span class="p">].</span><span class="nx">initialize</span><span class="p">(</span><span class="nx">x</span><span class="p">,</span> <span class="nx">y</span><span class="p">,</span> <span class="nx">dx</span><span class="p">,</span> <span class="nx">dy</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC351'>&#x000A;</div><div class='line' id='LC352'>          <span class="c1">// handle circular queue</span>&#x000A;</div><div class='line' id='LC353'>          <span class="nx">firstFree</span><span class="o">++</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC354'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstFree</span> <span class="o">==</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="nx">firstFree</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC355'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstActive</span> <span class="o">==</span> <span class="nx">firstFree</span><span class="p">)</span> <span class="nx">firstActive</span><span class="o">++</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC356'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstActive</span> <span class="o">==</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="nx">firstActive</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC357'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC358'>        <span class="nx">ParticlePool</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">update</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">deltaTime</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC359'>          <span class="kd">var</span> <span class="nx">i</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC360'>&#x000A;</div><div class='line' id='LC361'>          <span class="c1">// update active particles</span>&#x000A;</div><div class='line' id='LC362'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstActive</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC363'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="nx">firstActive</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC364'>              <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">update</span><span class="p">(</span><span class="nx">deltaTime</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC365'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC366'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstFree</span> <span class="o">&lt;</span> <span class="nx">firstActive</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC367'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="nx">firstActive</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC368'>              <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">update</span><span class="p">(</span><span class="nx">deltaTime</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC369'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">update</span><span class="p">(</span><span class="nx">deltaTime</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC370'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC371'>&#x000A;</div><div class='line' id='LC372'>          <span class="c1">// remove inactive particles</span>&#x000A;</div><div class='line' id='LC373'>          <span class="k">while</span> <span class="p">(</span>&#x000A;</div><div class='line' id='LC374'>            <span class="nx">particles</span><span class="p">[</span><span class="nx">firstActive</span><span class="p">].</span><span class="nx">age</span> <span class="o">&gt;=</span> <span class="nx">duration</span> <span class="o">&amp;&amp;</span>&#x000A;</div><div class='line' id='LC375'>            <span class="nx">firstActive</span> <span class="o">!=</span> <span class="nx">firstFree</span>&#x000A;</div><div class='line' id='LC376'>          <span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC377'>            <span class="nx">firstActive</span><span class="o">++</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC378'>            <span class="k">if</span> <span class="p">(</span><span class="nx">firstActive</span> <span class="o">==</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span> <span class="nx">firstActive</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC379'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC380'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC381'>        <span class="nx">ParticlePool</span><span class="p">.</span><span class="nx">prototype</span><span class="p">.</span><span class="nx">draw</span> <span class="o">=</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC382'>          <span class="c1">// draw active particles</span>&#x000A;</div><div class='line' id='LC383'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstActive</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC384'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="nx">firstActive</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC385'>              <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">draw</span><span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC386'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC387'>          <span class="k">if</span> <span class="p">(</span><span class="nx">firstFree</span> <span class="o">&lt;</span> <span class="nx">firstActive</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC388'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="nx">firstActive</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span>&#x000A;</div><div class='line' id='LC389'>              <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">draw</span><span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC390'>            <span class="k">for</span> <span class="p">(</span><span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">firstFree</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="nx">particles</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">draw</span><span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC391'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC392'>        <span class="p">};</span>&#x000A;</div><div class='line' id='LC393'>        <span class="k">return</span> <span class="nx">ParticlePool</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC394'>      <span class="p">})();</span>&#x000A;</div><div class='line' id='LC395'>&#x000A;</div><div class='line' id='LC396'>      <span class="cm">/*</span>&#x000A;</div><div class='line' id='LC397'><span class="cm">       * Putting it all together</span>&#x000A;</div><div class='line' id='LC398'><span class="cm">       */</span>&#x000A;</div><div class='line' id='LC399'>      <span class="p">(</span><span class="kd">function</span> <span class="p">(</span><span class="nx">canvas</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC400'>        <span class="kd">var</span> <span class="nx">context</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">getContext</span><span class="p">(</span><span class="dl">"</span><span class="s2">2d</span><span class="dl">"</span><span class="p">),</span>&#x000A;</div><div class='line' id='LC401'>          <span class="nx">particles</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">ParticlePool</span><span class="p">(</span><span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">length</span><span class="p">),</span>&#x000A;</div><div class='line' id='LC402'>          <span class="nx">particleRate</span> <span class="o">=</span>&#x000A;</div><div class='line' id='LC403'>            <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">length</span> <span class="o">/</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">duration</span><span class="p">,</span> <span class="c1">// particles/sec</span>&#x000A;</div><div class='line' id='LC404'>          <span class="nx">time</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC405'>&#x000A;</div><div class='line' id='LC406'>        <span class="c1">// get point on heart with -PI </span><span class="o">&lt;=</span> <span class="nx">t</span> <span class="o">&lt;=</span> <span class="nx">PI</span>&#x000A;</div><div class='line' id='LC407'>        <span class="kd">function</span> <span class="nx">pointOnHeart</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC408'>          <span class="k">return</span> <span class="k">new</span> <span class="nx">Point</span><span class="p">(</span>&#x000A;</div><div class='line' id='LC409'>            <span class="mi">160</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">t</span><span class="p">),</span> <span class="mi">3</span><span class="p">),</span>&#x000A;</div><div class='line' id='LC410'>            <span class="mi">130</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="o">-</span>&#x000A;</div><div class='line' id='LC411'>              <span class="mi">50</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="nx">t</span><span class="p">)</span> <span class="o">-</span>&#x000A;</div><div class='line' id='LC412'>              <span class="mi">20</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="mi">3</span> <span class="o">*</span> <span class="nx">t</span><span class="p">)</span> <span class="o">-</span>&#x000A;</div><div class='line' id='LC413'>              <span class="mi">10</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="mi">4</span> <span class="o">*</span> <span class="nx">t</span><span class="p">)</span> <span class="o">+</span>&#x000A;</div><div class='line' id='LC414'>              <span class="mi">25</span>&#x000A;</div><div class='line' id='LC415'>          <span class="p">);</span>&#x000A;</div><div class='line' id='LC416'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC417'>&#x000A;</div><div class='line' id='LC418'>        <span class="c1">// creating the particle image using a dummy canvas</span>&#x000A;</div><div class='line' id='LC419'>        <span class="kd">var</span> <span class="nx">image</span> <span class="o">=</span> <span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC420'>          <span class="kd">var</span> <span class="nx">canvas</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="dl">"</span><span class="s2">canvas</span><span class="dl">"</span><span class="p">),</span>&#x000A;</div><div class='line' id='LC421'>            <span class="nx">context</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">getContext</span><span class="p">(</span><span class="dl">"</span><span class="s2">2d</span><span class="dl">"</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC422'>          <span class="nx">canvas</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC423'>          <span class="nx">canvas</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC424'>          <span class="c1">// helper function to create the path</span>&#x000A;</div><div class='line' id='LC425'>          <span class="kd">function</span> <span class="nx">to</span><span class="p">(</span><span class="nx">t</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC426'>            <span class="kd">var</span> <span class="nx">point</span> <span class="o">=</span> <span class="nx">pointOnHeart</span><span class="p">(</span><span class="nx">t</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC427'>            <span class="nx">point</span><span class="p">.</span><span class="nx">x</span> <span class="o">=</span>&#x000A;</div><div class='line' id='LC428'>              <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">+</span>&#x000A;</div><div class='line' id='LC429'>              <span class="p">(</span><span class="nx">point</span><span class="p">.</span><span class="nx">x</span> <span class="o">*</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span><span class="p">)</span> <span class="o">/</span> <span class="mi">350</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC430'>            <span class="nx">point</span><span class="p">.</span><span class="nx">y</span> <span class="o">=</span>&#x000A;</div><div class='line' id='LC431'>              <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span>&#x000A;</div><div class='line' id='LC432'>              <span class="p">(</span><span class="nx">point</span><span class="p">.</span><span class="nx">y</span> <span class="o">*</span> <span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">size</span><span class="p">)</span> <span class="o">/</span> <span class="mi">350</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC433'>            <span class="k">return</span> <span class="nx">point</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC434'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC435'>          <span class="c1">// create the path</span>&#x000A;</div><div class='line' id='LC436'>          <span class="nx">context</span><span class="p">.</span><span class="nx">beginPath</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC437'>          <span class="kd">var</span> <span class="nx">t</span> <span class="o">=</span> <span class="o">-</span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC438'>          <span class="kd">var</span> <span class="nx">point</span> <span class="o">=</span> <span class="nx">to</span><span class="p">(</span><span class="nx">t</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC439'>          <span class="nx">context</span><span class="p">.</span><span class="nx">moveTo</span><span class="p">(</span><span class="nx">point</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span> <span class="nx">point</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC440'>          <span class="k">while</span> <span class="p">(</span><span class="nx">t</span> <span class="o">&lt;</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC441'>            <span class="nx">t</span> <span class="o">+=</span> <span class="mf">0.01</span><span class="p">;</span> <span class="c1">// baby steps!</span>&#x000A;</div><div class='line' id='LC442'>            <span class="nx">point</span> <span class="o">=</span> <span class="nx">to</span><span class="p">(</span><span class="nx">t</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC443'>            <span class="nx">context</span><span class="p">.</span><span class="nx">lineTo</span><span class="p">(</span><span class="nx">point</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span> <span class="nx">point</span><span class="p">.</span><span class="nx">y</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC444'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC445'>          <span class="nx">context</span><span class="p">.</span><span class="nx">closePath</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC446'>          <span class="c1">// create the fill</span>&#x000A;</div><div class='line' id='LC447'>          <span class="nx">context</span><span class="p">.</span><span class="nx">fillStyle</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">#ea80b0</span><span class="dl">"</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC448'>          <span class="nx">context</span><span class="p">.</span><span class="nx">fill</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC449'>          <span class="c1">// create the image</span>&#x000A;</div><div class='line' id='LC450'>          <span class="kd">var</span> <span class="nx">image</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Image</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC451'>          <span class="nx">image</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">toDataURL</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC452'>          <span class="k">return</span> <span class="nx">image</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC453'>        <span class="p">})();</span>&#x000A;</div><div class='line' id='LC454'>&#x000A;</div><div class='line' id='LC455'>        <span class="c1">// render that thing!</span>&#x000A;</div><div class='line' id='LC456'>        <span class="kd">function</span> <span class="nx">render</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC457'>          <span class="c1">// next animation frame</span>&#x000A;</div><div class='line' id='LC458'>          <span class="nx">requestAnimationFrame</span><span class="p">(</span><span class="nx">render</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC459'>&#x000A;</div><div class='line' id='LC460'>          <span class="c1">// update time</span>&#x000A;</div><div class='line' id='LC461'>          <span class="kd">var</span> <span class="nx">newTime</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">Date</span><span class="p">().</span><span class="nx">getTime</span><span class="p">()</span> <span class="o">/</span> <span class="mi">1000</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC462'>            <span class="nx">deltaTime</span> <span class="o">=</span> <span class="nx">newTime</span> <span class="o">-</span> <span class="p">(</span><span class="nx">time</span> <span class="o">||</span> <span class="nx">newTime</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC463'>          <span class="nx">time</span> <span class="o">=</span> <span class="nx">newTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC464'>&#x000A;</div><div class='line' id='LC465'>          <span class="c1">// clear canvas</span>&#x000A;</div><div class='line' id='LC466'>          <span class="nx">context</span><span class="p">.</span><span class="nx">clearRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">width</span><span class="p">,</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC467'>&#x000A;</div><div class='line' id='LC468'>          <span class="c1">// create new particles</span>&#x000A;</div><div class='line' id='LC469'>          <span class="kd">var</span> <span class="nx">amount</span> <span class="o">=</span> <span class="nx">particleRate</span> <span class="o">*</span> <span class="nx">deltaTime</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC470'>          <span class="k">for</span> <span class="p">(</span><span class="kd">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">amount</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC471'>            <span class="kd">var</span> <span class="nx">pos</span> <span class="o">=</span> <span class="nx">pointOnHeart</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span> <span class="o">-</span> <span class="mi">2</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span> <span class="o">*</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">());</span>&#x000A;</div><div class='line' id='LC472'>            <span class="kd">var</span> <span class="nx">dir</span> <span class="o">=</span> <span class="nx">pos</span><span class="p">.</span><span class="nx">clone</span><span class="p">().</span><span class="nx">length</span><span class="p">(</span><span class="nx">settings</span><span class="p">.</span><span class="nx">particles</span><span class="p">.</span><span class="nx">velocity</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC473'>            <span class="nx">particles</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span>&#x000A;</div><div class='line' id='LC474'>              <span class="nx">canvas</span><span class="p">.</span><span class="nx">width</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">+</span> <span class="nx">pos</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC475'>              <span class="nx">canvas</span><span class="p">.</span><span class="nx">height</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="nx">pos</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC476'>              <span class="nx">dir</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span>&#x000A;</div><div class='line' id='LC477'>              <span class="o">-</span><span class="nx">dir</span><span class="p">.</span><span class="nx">y</span>&#x000A;</div><div class='line' id='LC478'>            <span class="p">);</span>&#x000A;</div><div class='line' id='LC479'>          <span class="p">}</span>&#x000A;</div><div class='line' id='LC480'>&#x000A;</div><div class='line' id='LC481'>          <span class="c1">// update and draw particles</span>&#x000A;</div><div class='line' id='LC482'>          <span class="nx">particles</span><span class="p">.</span><span class="nx">update</span><span class="p">(</span><span class="nx">deltaTime</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC483'>          <span class="nx">particles</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">context</span><span class="p">,</span> <span class="nx">image</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC484'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC485'>&#x000A;</div><div class='line' id='LC486'>        <span class="c1">// handle (re-)sizing of the canvas</span>&#x000A;</div><div class='line' id='LC487'>        <span class="kd">function</span> <span class="nx">onResize</span><span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC488'>          <span class="nx">canvas</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">clientWidth</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC489'>          <span class="nx">canvas</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">canvas</span><span class="p">.</span><span class="nx">clientHeight</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC490'>        <span class="p">}</span>&#x000A;</div><div class='line' id='LC491'>        <span class="nb">window</span><span class="p">.</span><span class="nx">onresize</span> <span class="o">=</span> <span class="nx">onResize</span><span class="p">;</span>&#x000A;</div><div class='line' id='LC492'>&#x000A;</div><div class='line' id='LC493'>        <span class="c1">// delay rendering bootstrap</span>&#x000A;</div><div class='line' id='LC494'>        <span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>&#x000A;</div><div class='line' id='LC495'>          <span class="nx">onResize</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC496'>          <span class="nx">render</span><span class="p">();</span>&#x000A;</div><div class='line' id='LC497'>        <span class="p">},</span> <span class="mi">10</span><span class="p">);</span>&#x000A;</div><div class='line' id='LC498'>      <span class="p">})(</span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">pinkboard</span><span class="dl">"</span><span class="p">));</span>&#x000A;</div><div class='line' id='LC499'>&#x000A;</div><div class='line' id='LC500'>      <span class="c1">// 参考：https://blog.csdn.net/weixin_57038822/article/details/121644240</span>&#x000A;</div><div class='line' id='LC501'>    <span class="nt">&lt;/script&gt;</span>&#x000A;</div><div class='line' id='LC502'>  &#x000A;</div><div class='line' id='LC503'>&#x000A;</div><div class='line' id='LC504'><span class="nt">&lt;/body&gt;&lt;/html&gt;</span>&#x000A;</div></pre><div class="markdown-code-block-copy-btn"></div></div></div>
</div>
<script>
  window.Gitee.initReadmeCatalog();
  toMathMlCode('','markdown-body');
  $('.file_content a, .catalog-li a.anchor').click(function () {
    var anchor = $(this).attr('href')
    window.location.hash = anchor
  })
</script>

</div>
</div>
<div class='tree_progress'></div>
<div class='ui small modal' id='modal-linejump'>
<div class='ui custom form content'>
<div class='field'>
<div class='ui right action input'>
<input placeholder='跳转至某一行...' type='number'>
<div class='ui orange button'>
跳转
</div>
</div>
</div>
</div>
</div>

<div class='complaint'>
<div class='ui modal small form' id='landing-comments-complaint-modal'>
<i class='iconfont icon-close close'></i>
<div class='header'>
举报
</div>
<div class='content'>
<div class='appeal-success-tip hide'>
<i class='iconfont icon-ic_msg_success'></i>
<div class='appeal-success-text'>
举报成功
</div>
<span>
我们将于2个工作日内通过站内信反馈结果给你！
</span>
</div>
<div class='appeal-tip'>
请认真填写举报原因，尽可能描述详细。
</div>
<div class='ui form appeal-form'>
<div class='inline field'>
<label class='left-part appeal-type-wrap'>
举报类型
</label>
<div class='ui dropdown selection' id='appeal-comments-types'>
<div class='text default'>
请选择举报类型
</div>
<i class='dropdown icon'></i>
<div class='menu'></div>
</div>
</div>
<div class='inline field'>
<label class='left-part'>
举报原因
</label>
<textarea class='appeal-reason' id='appeal-comment-reason' name='msg' placeholder='请说明举报原因' rows='3'></textarea>
</div>
<div class='ui message callback-msg hide'></div>
<div class='ui small error text message exceeded-size-tip'></div>
</div>
</div>
<div class='actions'>
<div class='ui button blank cancel'>
取消
</div>
<div class='ui orange icon button disabled ok' id='complaint-comment-confirm'>
发送
</div>
</div>
</div>
<script>
  var $complaintCommentsModal = $('#landing-comments-complaint-modal'),
      $complainCommentType = $complaintCommentsModal.find('#appeal-comments-types'),
      $complaintModalTip = $complaintCommentsModal.find('.callback-msg'),
      $complaintCommentsContent = $complaintCommentsModal.find('.appeal-reason'),
      $complaintCommentBtn = $complaintCommentsModal.find('#complaint-comment-confirm'),
      complaintSending = false,
      initedCommentsType = false;
  
  function initCommentsTypeList() {
    if (!initedCommentsType) {
      $.ajax({
        url: "/appeals/fetch_types",
        method: 'get',
        data: {'type': 'comment'},
        success: function (data) {
          var result = '';
          for (var i = 0; i < data.length; i++) {
            result = result + "<div class='item' data-value='" + data[i].id + "'>" + data[i].name + "</div>";
          }
          $complainCommentType.find('.menu').html(result);
        }
      });
      $complainCommentType.dropdown({showOnFocus: false});
      initedCommentsType = true;
    }
  }
  $complainCommentType.on('click', function() {
    $complaintCommentsModal.modal({
      autofocus: false,
      onApprove: function() {
        return false;
      },
      onHidden: function() {
        restoreCommonentDefault();
      }
    }).modal('show');
  });
  
  $complaintCommentsContent.on('change keyup', function(e) {
    var content = $(this).val();
    if ($.trim(content).length > 0 && $complainCommentType.dropdown('get value').length > 0 ) {
      $complaintCommentBtn.removeClass('disabled');
      return;
    }
    $complaintCommentBtn.addClass('disabled');
  });
  
  
  $complainCommentType.dropdown({
    showOnFocus: false,
    onChange: function(value, text, $selectedItem) {
      if (value.length > 0 && $.trim($complaintCommentsContent.val()).length > 0) {
        $complaintCommentBtn.removeClass('disabled');
        return
      }
      $complaintCommentBtn.addClass('disabled');
    }
  });
  
  function restoreCommonentDefault() {
    $complainCommentType.dropdown('restore defaults');
    $complaintCommentsContent.val('');
    $('.exceeded-size-tip').text('').hide();
    $complaintModalTip.text('').hide();
    setTimeout(function() {
      setCommentSendTip(false);
    }, 1500);
  }
  
  $complaintCommentBtn.on('click',function(e){
    var reason = $complaintCommentsContent.val();
    var appealableId = $('#landing-comments-complaint-modal').attr('data-id');
    if (complaintSending) {
      return;
    }
    var appealType = $complainCommentType.dropdown('get value');
    var formData = new FormData();
    formData.append('appeal_type_id', appealType);
    formData.append('reason', reason);
    formData.append('appeal_type','Note');
    formData.append('target_id',appealableId);
    $.ajax({
      type: 'POST',
      url: "/appeals",
      cache: false,
      contentType: false,
      processData: false,
      data: formData,
      beforeSend: function() {
        setCommentSendStatus(true);
      },
      success: function(res) {
        if (res.status == 200) {
          setCommentSendTip(true);
          setTimeout(function() {
            $complaintCommentsModal.modal('hide');
            restoreCommonentDefault();
          }, 3000);
        }
        setCommentSendStatus(false);
      },
      error: function(err) {
        showCommonTips(err.responseJSON.message, 'error');
        setCommentSendStatus(false);
      }
    })
  });
  
  function showCommonTips(text, type) {
    $complaintModalTip.text(text).show();
    if (type == 'error') {
      $complaintModalTip.removeClass('success').addClass('error');
    } else {
      $complaintModalTip.removeClass('error').addClass('success');
    }
  }
  
  function setCommentSendStatus(value) {
    complaintSending = value;
    if (complaintSending) {
      $complaintCommentBtn.addClass('loading');
      $complaintCommentsContent.attr('readonly', true);
      $complainCommentType.attr('readonly', true);
    } else {
      $complaintCommentBtn.removeClass('loading');
      $complaintCommentsContent.attr('readonly', false);
      $complainCommentType.attr('readonly', false);
    }
  }
  
  function setCommentSendTip(value) {
    if (value) {
      $('.appeal-success-tip').removeClass('hide');
      $('.appeal-tip').addClass('hide');
      $('.appeal-form').addClass('hide');
      $('#landing-comments-complaint-modal .actions').addClass('hide');
    } else {
      $('.appeal-success-tip').addClass('hide');
      $('.appeal-tip').removeClass('hide');
      $('.appeal-form').removeClass('hide');
      $('#landing-comments-complaint-modal .actions').removeClass('hide');
    }
  }
</script>

<div class='ui small modal' id='misjudgment_appeal_modal'>
<i class='close icon'></i>
<div class='header dividing ui'>
误判申诉
</div>
<div class='content'>
<p>此处可能存在不合适展示的内容，页面不予展示。您可通过相关编辑功能自查并修改。</p>
<p>如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容，可点击提交进行申诉，我们将尽快为您处理。</p>
<div class='buttons'>
<div class='ui button blank cancel'>取消</div>
<div class='ui button orange submit'>提交</div>
</div>
</div>
</div>
<style>
  #misjudgment_appeal_modal .buttons {
    float: right;
    margin-top: 30px;
    margin-bottom: 20px; }
    #misjudgment_appeal_modal .buttons .cancel {
      margin-right: 20px; }
</style>
<script>
  var $misjudgmentAppealModal = $('#misjudgment_appeal_modal');
  $('.cancel').on('click',function(){
    $misjudgmentAppealModal.modal('hide');
  });
  var $jsSubmitAppeal = $misjudgmentAppealModal.find('.submit')
  $jsSubmitAppeal.on('click', function(e) {
    e.preventDefault();
    $(this).addClass('loading').addClass('disabled');
    var type = $(this).attr('data-type');
    var id = $(this).attr('data-id');
    var projectId = $(this).attr('data-project-id');
    var appealType = $(this).attr('data-appeal-type');
    $.ajax({
      type: "PUT",
      url: "/misjudgment_appeal",
      data: {
        type: type,
        id: id,
        project_id: projectId,
        appeal_type: appealType
      },
      success: function(data) {
        Flash.info('提交成功');
        $jsSubmitAppeal.removeClass('loading');
        $misjudgmentAppealModal.modal('hide');
        location.reload()
      },
      error: function(e) {
        Flash.error('提交失败:'+e.responseText);
        $jsSubmitAppeal.removeClass('loading').removeClass('disabled');
        location.reload()
      }
    });
  })
</script>

</div>
<script>
  "use strict";
  $('.js-check-star').checkbox('set unchecked')
</script>

</div>
</div>
</div>
<div class='four wide column' style='display: none;'>
<div class='project__right-side'>
<div class='side-item intro'>
<div class='header'>
<h4>简介</h4>
<a class="ui link button pull-right btn-edit" href="javascript:void(0);"><i class='iconfont icon-edit'></i>
</a></div>
<div class='content'>
<span class='git-project-desc-text'>爱心代码</span>
<a class='hide spread' href='javascript:void(0);'>
展开
<i class='caret down icon'></i>
</a>
<a class='retract hide' href='javascript:void(0);'>
收起
<i class='caret up icon'></i>
</a>
<div class='intro-list'>
<div class='blank d-flex d-flex-between dropdown item js-project-label_show label-list-line-feed project-label-list ui' data-labels='[]' data-url='/yzk_11/love_code/update_description'>
<div class='mixed-label'>
</div>

<div class='default'>暂无标签</div>
<i class='iconfont icon-add-thin hover-color cursor-pointer'></i>
<div class='menu w100'>
<div class='ui input mt-1 mb-1 ml-1 mr-1'>
<input maxlength='35' placeholder='搜索或创建标签' type='text'>
</div>
<div class='scrolling menu'>
<div class='item d-none-important' data-is-related='0' data-value=''></div>
</div>
</div>
</div>
<div class='hide item'>
<i class='iconfont icon-link'></i>
<span class='git-project-homepage'>
<a rel="nofollow" id="homepage" target="_blank" href=""></a>
</span>
</div>
<div class='item'>
<i class='iconfont icon-tag-program'></i>
<span class='summary-languages'>
HTML
</span>
<div class='ui popup summary-languages-popup'>
<div class='row'>
<div class='lang'>
<a href="/explore/all?lang=HTML">HTML</a>
</div>
<div class='lang-bar'>
<div class='bar' style='width: 100.0%;'></div>
</div>
<a class="percentage" href="/explore/all?lang=HTML">100.0%</a>
</div>
</div>
</div>

<!-- - page = @project.page -->
<!-- - if page&.status? -->
<!-- .item -->
<!-- %i.iconfont.icon-giteepage -->
<!-- Pages： -->
<!-- = link_to page.domain_url, page.domain_url, target: '_blank' -->
</div>
</div>
<div class='content intro-form'>
<div class='ui small input'>
<textarea name='project[description]' placeholder='描述' rows='5'></textarea>
</div>
<div class='ui small input'>
<input data-regex-value='(^$)|(^(http|https):\/\/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*)|(^(http|https):\/\/[a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,10}(:[0-9]{1,10})?(\?.*)?(\/.*)?$)' name='project[homepage]' placeholder='主页(eg: https://gitee.com)' type='text'>
</div>
<button class='ui orange button mt-1 btn-save'>
保存更改
</button>
<div class='ui blank button btn-cancel-edit'>
取消
</div>
</div>
</div>
<div class='side-item release'>
<div class='header'>
<h4>发行版</h4>
</div>
<div class='content'>
<span class='text-muted'>
暂无发行版，
<a href="/yzk_11/love_code/releases/new">创建</a>
</span>
</div>
</div>
<div class='side-item contrib' data-url='/yzk_11/love_code/contributors_count?ref=master' id='contributor'>
<div class='header'>
<h4>
贡献者
<span class='text-muted' id='contributor-count'></span>
</h4>
<a class="ui link button pull-right" href="/yzk_11/love_code/contributors?ref=master">全部</a>
</div>
<div class='content' id='contributor-list'></div>
<div class='ui active centered inline loader' id='contributor-loader'></div>
</div>
<div class='side-item events' data-url='/yzk_11/love_code/events.json' id='proj-events'>
<div class='header'>
<h4>近期动态</h4>
</div>
<div class='content'>
<div class='ui comments' id='event-list'></div>
<a class="loadmore hide" href="javascript:void(0);">加载更多
<i class='icon dropdown'></i>
</a><center>
<div class='text-muted nomore hide'>不能加载更多了</div>
<div class='ui inline loader active'></div>
</center>
</div>
</div>
</div>
<div class='ui modal tiny' id='edit-project-description'>
<i class='iconfont icon-close close'></i>
<div class='header'>编辑仓库简介</div>
<div class='content'>
<div class='item mb-2'>
<div class='title label'>简介内容</div>
<div class='ui small input'>
<textarea maxlength='200' name='project[description]' placeholder='描述' rows='5'>爱心代码</textarea>
</div>
</div>
<div class='item mb-2'>
<div class='title label'>主页</div>
<div class='ui small input'>
<input data-regex-value='(^$)|(^(http|https):\/\/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).*)|(^(http|https):\/\/[a-zA-Z0-9]+([_\-\.]{1}[a-zA-Z0-9]+)*\.[a-zA-Z]{2,10}(:[0-9]{1,10})?(\?.*)?(\/.*)?$)' name='project[homepage]' placeholder='主页(eg: https://gitee.com)' type='text' value=''>
</div>
</div>
</div>
<div class='actions'>
<button class='ui button blank cancel'>取消</button>
<button class='ui button orange btn-save'>保存更改</button>
</div>
</div>

<style>
  #license-popup {
    color: #005980;
    cursor: pointer; }
</style>
<script>
  window.gon.projectRightSide = {
    homepage: "",
    description: "爱心代码",
    url: '/yzk_11/love_code/update_description',
    i18n: {
      invalidHomepage: '不是有效的 http 地址',
      descriptionLimitExceeded: '简介长度不得超过%{limit}个字符',
      noDescription: '暂无描述',
      noPermission: '无权限操作！',
      requestError: '修改发生错误，请稍后重试！'
    }
  }
  window.gon.cloneArrSelectedLabel = [] || []
  $(function () {
    var $editModal = $('#edit-project-description')
    $editModal.modal({
      onShow: function () {
        window.globalUtils.getFocus($editModal.find('textarea'))
      }
    })
    $('.project__right-side').on('click', '.header .btn-edit', function () {
      $editModal.modal('show')
    })
    $('#license-popup').popup({ position: 'bottom center', lastResort: 'bottom center' })
  
    $('.js-project-label_show').projectLabel({
      i18n: {
        empty: "标签名不能为空",
        verify: "标签名只允许包含中文、字母、数字或者中划线(-)，不能以中划线开头，且长度少于35个字符",
        max: "最多选择 5 个标签"
      }
    })
  })
</script>

</div>
<div class='project-right-side-contaner' id='code-parsing'>
<div class='d-flex-between mb-2'>
<div class='title fs-16 d-align-center'>
<img class='mr-1' height='32' src='/static/images/mjc_icon@2x.png' width='32'>
<span class='ai-file-name'>马建仓 AI 助手</span>
</div>
<div>
<i class='iconfont icon-close close gitee-icon-close'></i>
</div>
</div>
<div class='code-parsing-content'>
<div class='sub_title'></div>
<div class='markdown-body'></div>
<div class='bottom-content'>
<div class='js-code-parsing-img'></div>
<div class='ai_code_btns_simple'>
<div class='ai_code_btns_simple_container'>
<div class='mr-1 test-more'>尝试更多</div>
<div class='btn_box' data-text='代码解读' data-value='parsing'>
<div class='btn_box_title'>代码解读</div>
</div>
<div class='btn_box' data-text='代码找茬' data-value='analysis'>
<div class='btn_box_title'>代码找茬</div>
</div>
<div class='btn_box' data-text='代码优化' data-value='optimize'>
<div class='btn_box_title'>代码优化</div>
</div>
</div>
</div>
</div>
</div>
<div class='skeleton'>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
<div class='line line1'></div>
<div class='line line2'></div>
<div class='line line3'></div>
<div class='line line4'></div>
</div>
<div class='resize-handle'>
<div class='resize-handle-line'></div>
</div>
<script src="/static/javascripts/markdown-it.min.js"></script>
<script src="https://cn-assets.gitee.com/assets/ai_code_parsing/app-642ecd30110bdb891918afedc215072c.js"></script>
<script>
  $(function() {
    var maxWidthPercentage = 0.5;
    $("#code-parsing").resizable({
      handles: 'e, w', // 通过左边调整大小
      minWidth: 350, // 设置 代码解析框 的最小宽度
      resize: function(event, ui) {
        // 当调整大小时，确保 文件详情 的宽度不小于最小宽度
        var parentWidth = $(this).parent().width();
        var newWidthDiv2 = ui.size.width;
        var newWidthDiv1 = parentWidth - newWidthDiv2;
        // 计算最大宽度
        var maxWidthDiv2 = parentWidth * maxWidthPercentage;
        // 确保 代码解析框 不超过最大宽度
        newWidthDiv2 = Math.min(newWidthDiv2, maxWidthDiv2);
        // 确保 文件详情 至少有最小宽度
        newWidthDiv1 = Math.max(parentWidth - newWidthDiv2, 750);
  
        var percentageCode = (newWidthDiv2 / parentWidth) * 100;
        var percentageProject = (newWidthDiv1 / parentWidth) * 100;
  
        $('#code-parsing').css('width',percentageCode+"%")
        $('#git-project-container').attr('style', 'width: ' + percentageProject + '% !important;');
      }
    });
  })
</script>

</div>
</div>
</div>
<script>
  (function() {
    $(function() {
      Tree.init();
      return TreeCommentActions.init();
    });
  
  }).call(this);
</script>
<script>
  function scrollToReadmeBox() {
    var readmeBox = document.getElementById('git-readme');
    if (readmeBox) {
      const topPos = readmeBox.offsetTop;
      window.scrollTo({ top: topPos, behavior: "smooth" });
    }
  }
  $(".box-licence").click(function(event) {
    $('.lisence-content').show()
    $('.lisence-edit').show()
    $('.readme-content').hide()
    $('.readme-edit').hide()
    $('.file_title_license').addClass('active-title')
    $('.file_title_readme').removeClass('active-title')
    scrollToReadmeBox()
  });
</script>
<script src="/static/javascripts/file-icons.js"></script>
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/assets/markdown_preview-759e5a584b0bd13e42c55a89a695ffcd.css" />
<script src="https://cn-assets.gitee.com/assets/markdown_preview-488758b6a293f2d58a849a8ff2bb6d44.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/vendors_lib-7ff466a6da368d391eda.js" defer="defer"></script>
<script src="https://cn-assets.gitee.com/webpacks/markdown_render-c9df1316272845d8df27.bundle.js" defer="defer"></script>
<script src="https://cn-assets.gitee.com/webpacks/gitee-linker.b5c93d77567006097fca.js"></script>

</div>
<script>
  (function() {
    var donateModal;
  
    Gitee.modalHelper = new GiteeModalHelper({
      alertText: '提示',
      okText: '确定'
    });
  
    donateModal = new ProjectDonateModal({
      el: '#project-donate-modal',
      alipayUrl: '/yzk_11/love_code/alipay',
      wepayUrl: '/yzk_11/love_code/wepay',
      nameIsBlank: '名称不能为空',
      nameTooLong: '名称过长（最多为 36 个字符）',
      modalHelper: Gitee.modalHelper
    });
  
    if (null === 'true') {
      donateModal.show();
    }
  
    $('#project-donate').on('click', function() {
      return donateModal.show();
    });
  
  }).call(this);
</script>
<script>
  Tree.initHighlightTheme('white')
</script>


</div>
<div class='gitee-project-extension'>
<div class='extension public'>1</div>
<div class='extension https'>https://gitee.com/yzk_11/love_code.git</div>
<div class='extension ssh'>git@gitee.com:yzk_11/love_code.git</div>
<div class='extension namespace'>yzk_11</div>
<div class='extension repo'>love_code</div>
<div class='extension name'>love_code</div>
<div class='extension branch'>master</div>
</div>
<style>
  .gfm-team_member[data-username="yzk_11"] {
    padding: 0 4px;
    background: rgba(44,126,248,0.10);
    border-radius: 2px;
  }
</style>

<script>
  $(function() {
    GitLab.GfmAutoComplete.dataSource = "/yzk_11/love_code/autocomplete_sources"
    GitLab.GfmAutoComplete.Emoji.assetBase = '/assets/emoji'
    GitLab.GfmAutoComplete.setup();
  });
</script>

<footer id='git-footer-main'>
<div class='ui container'>
<div class='logo-row'>
<a href="https://gitee.com"><img alt='Gitee - 基于 Git 的代码托管和研发协作平台' class='logo-img' src='/static/images/logo-black.svg?t=158106666'>
</a></div>
<div class='name-important'>
深圳市奥思网络科技有限公司版权所有
</div>
<div class='ui two column grid d-flex-center'>
<div class='eight wide column git-footer-left'>
<div class='ui four column grid' id='footer-left'>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/all-about-git">Git 大全</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://help.gitee.com/learn-Git-Branching/">Git 命令学习</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://copycat.gitee.com/">CopyCat 代码克隆检测</a>
</div>
<div class='item'>
<a class="item" href="/appclient">APP与插件下载</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/gitee_reward">Gitee Reward</a>
</div>
<div class='item'>
<a class="item" href="/gitee-stars">Gitee 封面人物</a>
</div>
<div class='item'>
<a class="item" href="/gvp">GVP 项目</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://blog.gitee.com/">Gitee 博客</a>
</div>
<div class='item'>
<a class="item" href="/enterprises#nonprofit-plan">Gitee 公益计划</a>
</div>
<div class='item'>
<a class="item" href="https://gitee.com/features/gitee-go">Gitee 持续集成</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/api/v5/swagger">OpenAPI</a>
</div>
<div class='item'>
<a class="item" href="https://help.gitee.com">帮助文档</a>
</div>
<div class='item'>
<a class="item" href="/self_services">在线自助服务</a>
</div>
<div class='item'>
<a class="item" href="/help/articles/4378">更新日志</a>
</div>
</div>
</div>
<div class='column'>
<div class='ui link list'>
<div class='item'>
<a class="item" href="/about_us">关于我们</a>
</div>
<div class='item'>
<a class="item" rel="nofollow" href="https://www.oschina.net/news/131099/oschina-hiring">加入我们</a>
</div>
<div class='item'>
<a class="item" href="/terms">使用条款</a>
</div>
<div class='item'>
<a class="item" href="/oschina/git-osc/issues">意见建议</a>
</div>
<div class='item'>
<a class="item" href="/links.html">合作伙伴</a>
</div>
</div>
</div>
</div>
</div>
<div class='eight wide column right aligned followus git-footer-right'>
<div class='qrcode mr-1'>
<div class='qrcode-box'>
<img alt="技术交流QQ群" src="https://cn-assets.gitee.com/assets/contact_qr-5e2c2a8da453396590e56a545bce4974.jpg" />
</div>
<p class='mt-1 mini_app-text'>技术交流QQ群</p>
</div>
<div class='qrcode'>
<div class='qrcode-box'>
<img alt="微信服务号" class="weixin-qr" src="https://cn-assets.gitee.com/assets/qrcode-weixin@2x-b74cc97a2ea80123ea53a737f709836d.png" />
</div>
<p class='mt-1 weixin-text'>微信服务号</p>
</div>
<div class='phone-and-qq column'>
<div class='ui list official-support-container'>
<div class='item'></div>
<div class='item mail-and-zhihu'>
<a rel="nofollow" href="mailto: client@oschina.cn"><i class='iconfont icon-msg-mail'></i>
<span id='git-footer-email'>client#oschina.cn</span>
</a></div>
<div class='item tel'>
<a>
<i class='iconfont icon-tel'></i>
<span>企业版在线使用：400-606-0201</span>
</a>
</div>
<div class='item tel'>
<a class='d-flex'>
<i class='iconfont icon-tel mt-05 mr-05'></i>
<span>专业版私有部署：</span>
<div>
<div>13670252304</div>
<div>13352947997</div>
</div>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class='bottombar'>
<div class='ui container'>
<div class='ui d-flex d-flex-between'>
<div class='seven wide column partner d-flex'>
<div class='open-atom d-flex-center'>
<img class="logo-openatom mr-1" alt="开放原子开源基金会" src="https://cn-assets.gitee.com/assets/logo-openatom-d083391cc8a54e283529f3fc11cc38ca.svg" />
<a target="_blank" rel="nofollow" href="https://www.openatom.org/">开放原子开源基金会</a>
<div class='sub-title ml-1'>合作代码托管平台</div>
</div>
<div class='report-12377 d-flex-center ml-3'>
<img class="report-12377__logo mr-1" alt="违法和不良信息举报中心" src="https://cn-assets.gitee.com/assets/12377@2x-1aa42ed2d2256f82a61ecf57be1ec244.png" />
<a target="_blank" rel="nofollow" href="https://12377.cn">违法和不良信息举报中心</a>
</div>
<div class='copyright ml-3'>
<a rel="nofollow" href="http://beian.miit.gov.cn/">粤ICP备12009483号</a>
</div>
</div>
<div class='nine wide column right aligned'>
<i class='icon world'></i>
<a href="/language/zh-CN">简 体</a>
/
<a href="/language/zh-TW">繁 體</a>
/
<a href="/language/en">English</a>
</div>
</div>
</div>
</div>
</footer>

<script>
  var officialEmail = $('#git-footer-email').text()
  $('#git-footer-main .icon-popup').popup({ position: 'bottom center' })
  $('#git-footer-email').text(officialEmail.replace('#', '@'))
  window.gon.popover_card_locale = {
    follow:"关注",
    unfollow:"已关注",
    gvp_title: "GVP - Gitee 最有价值开源项目",
    project: "项目",
    org: "开源组织",
    member: "",
    author: "作者",
    user_blocked: "该用户已被屏蔽或已注销",
    net_error: "网络错误",
    unknown_exception: "未知异常"
  }
  window.gon.select_message = {
    placeholder: "请输入个人空间地址或完整的邮箱地址"
  }
</script>
<script src="https://cn-assets.gitee.com/webpacks/popover_card-0b3d93eac35e19ebd534.bundle.js"></script>
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/webpacks/css/gitee_nps-ae0dbee40f6ddc72015a.css" />
<script src="https://cn-assets.gitee.com/webpacks/gitee_nps-30c2a3673b61c539fcf7.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/gitee_icons-dca837c9decf842b9615.bundle.js"></script>



<div class='side-toolbar'>
<div class='button toolbar-help'>
<i class='iconfont icon-help'></i>
</div>
<div class='ui popup left center dark'>点此查找更多帮助</div>
<div class='toolbar-help-dialog'>
<div class='toolbar-dialog-header'>
<h3 class='toolbar-dialog-title'>搜索帮助</h3>
<form class="toolbar-help-search-form" action="/help/load_keywords_data" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
<div class='ui icon input fluid toolbar-help-search'>
<input name='keywords' placeholder='请输入产品名称或问题' type='text'>
<i class='icon search'></i>
</div>
</form>

<i class='iconfont icon-close toolbar-dialog-close-icon'></i>
</div>
<div class='toolbar-dialog-content'>
<div class='toolbar-help-hot-search'>
<div class='toolbar-roll'>
<a class="init active" title="Git 命令在线学习" href="https://oschina.gitee.io/learn-git-branching/?utm_source==gitee-help-widget"><i class='Blue icon icon-command iconfont'></i>
<span>Git 命令在线学习</span>
</a><a class="init " title="如何在 Gitee 导入 GitHub 仓库" href="https://gitee.com/help/articles/4261?utm_source==gitee-help-widget"><i class='icon icon-clipboard iconfont orange'></i>
<span>如何在 Gitee 导入 GitHub 仓库</span>
</a></div>
<div class='toolbar-list'>
<div class='toolbar-list-item'>
<a href="/help/articles/4114">Git 仓库基础操作</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4166">企业版和社区版功能对比</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4191">SSH 公钥设置</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4194">如何处理代码冲突</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4232">仓库体积过大，如何减小？</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4279">如何找回被删除的仓库数据</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4283">Gitee 产品配额说明</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4284">GitHub仓库快速导入Gitee及同步更新</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4328">什么是 Release（发行版）</a>
</div>
<div class='toolbar-list-item'>
<a href="/help/articles/4354">将 PHP 项目自动发布到 packagist.org</a>
</div>
</div>
</div>
<div class='toolbar-help-search-reseult'></div>
</div>
</div>
<script>
  var opt = { position: 'left center'};
  var $helpSideToolbar = $('.button.toolbar-help');
  var $toolbarRoll = $('.toolbar-roll');
  
  $(function() {
    if (true) {
      $helpSideToolbar.popup(opt).popup({lastResort:'left center'})
    } else {
      $helpSideToolbar.popup({lastResort:'left center'}).popup('show', opt);
      setTimeout(function() {
        $helpSideToolbar.popup('hide', opt);
      }, 3000);
    }
  
    if ($toolbarRoll.length) {
      setInterval(function() {
        var $nextActiveLink = $toolbarRoll.find('a.active').next();
        if (!$nextActiveLink.length) {
          $nextActiveLink = $toolbarRoll.find('a:first-child');
        }
        $nextActiveLink.attr('class', 'active').siblings().removeClass('active init');
      }, 5000);
    }
  })
</script>

<div class='ui popup dark left center transition hidden js-feedback-popup'>发送反馈</div>
<div class='button' id='feedback-btn'>
<i class='iconfont icon-feedback'></i>
</div>
<div class='popup button' id='home-comment'>
<i class='iconfont icon-comment'></i>
</div>
<div class='ui popup dark'>评论</div>
<div class='button gotop popup' id='gotop'>
<i class='iconfont icon-top'></i>
</div>
<div class='ui popup dark'>回到顶部</div>
</div>
<style>
  .side-toolbar .bdsharebuttonbox a {
    font-size: 24px;
    color: white !important;
    opacity: 0.9;
    margin: 6px 6px 0px 6px;
    background-image: none;
    text-indent: 0;
    height: auto;
    width: auto;
  }
</style>
<style>
  #udesk_btn a {
    margin: 0px 20px 217px 0px !important;
  }
  #ent-sale-img-wrap {
    margin: 0px 15px 294px 0px !important;
  }
</style>
<script>
  (function() {
    $('#project-user-message').popup({
      position: 'left center'
    });
  
  }).call(this);
</script>
<script>
  Gitee.initSideToolbar({
    hasComment: true,
    commentUrl: '/yzk_11/love_code#tree_comm_title'
  })
</script>
<link rel="stylesheet" media="all" href="https://cn-assets.gitee.com/webpacks/css/side_toolbar_feedback-5dcc1be9cca438cc952f.css" />
<script src="https://cn-assets.gitee.com/webpacks/side_toolbar_feedback-c8aafff518fe30117b87.bundle.js"></script>



<style>
  .gitee-stars-main-widget {
    display: none;
    position: fixed;
    left: 0;
    bottom: 0;
    z-index: 106; }
    .gitee-stars-main-widget .close-icon {
      width: 20px;
      right: 10px;
      position: absolute;
      top: 0px;
      cursor: pointer; }
    .gitee-stars-main-widget .people-image {
      width: 200px;
      margin: 0 10px; }
  
  .gitee-stars-main-widget.gitee-stars-widget .close-icon {
    left: 20px; }
</style>
<div class='gitee-stars-main-widget pendan-widget'>
<a target="_blank" href="https://gitee.com/gitee-community/gitee-talk-0925"><img class="people-image" src="https://foruda.gitee.com/images/1726713677458435231/d67c1975_1850385.png" alt="D67c1975 1850385" />
<img class="close-icon" src="https://foruda.gitee.com/images/1726713677738514197/1daf7b77_1850385.png" alt="1daf7b77 1850385" />
</a></div>
<script>
  $(function () {
    var $giteeStarsWidget = $('.gitee-stars-main-widget')
    var cookieKey = "visit-gitee--2024-09-19"
  
    if ($.cookie(cookieKey) == 1) {
      $giteeStarsWidget.hide()
    } else {
      $giteeStarsWidget.show()
    }
  
    $giteeStarsWidget.on('click', '.close-icon', function (e) {
      e.preventDefault()
      $.cookie(cookieKey, 1, {path: '/', expires: 60})
      $giteeStarsWidget.hide()
    })
  })
</script>


<script>
  (function() {
    this.__gac = {
      domain: 'www.oschina.net'
    };
  
  }).call(this);
</script>

<script src="https://cn-assets.gitee.com/webpacks/build_status-fb432ebafd78f50ac52f.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/scan_status-e386e54b60ee0578619d.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/mermaid_render-409d81bfcfbae272dc35.bundle.js"></script>
<script src="https://cn-assets.gitee.com/webpacks/check_runs-8bae3ab16844e5860cc5.bundle.js"></script>
</body>
</html>
